SQL server阻塞的情形与定义

以下的文章主要向大家讲述的是对SQL server阻塞的正确讲解,同时本文也有对SQL server阻塞的定义,在实际操作中常见SQL server阻塞的情形以及对SQL server阻塞避免的方法的描述,以下就是对其相关内容的描述。

 SQL server阻塞定义

当来自应用程序的***个连接控制锁而第二个连接需要相冲突的锁类型时,将发生阻塞。其结果是强制第二个连接等待,而在***个连接上阻塞。不管是来自同一应用程序还是另外一台客户机上单独的应用程序,一个连接都可以阻塞另一个连接。

说明:一些需要锁保护的操作可能不明显,例如系统目录表和索引上的锁。

大多数阻塞问题的发生是因为一个进程控制锁的时间过长,导致SQL server阻塞的进程链都在其它进程上等待锁。

常见的阻塞情形

1 .提交执行时间长的查询。

长时间运行的查询会SQL server阻塞其它查询。例如,影响很多行的 DELETE 或 UPDATE

操作能获取很多锁,这些锁不论是否升级到表锁都阻塞其它查询。因此,一般不要将长时间运行的决策支持查询和联机事务处理 (OLTP)

查询混在一起。解决方案是想办法优化查询,如更改索引、将大的复杂查询分成简单的查询或在空闲时间或单独的计算机上运行查询。

2 .查询不适当地使用游标。游标可能是在结果集中浏览的便利方法,但使用游标可能比使用面向集合的查询慢。

3 .取消没有提交或回滚的查询。

如果应用程序取消查询(如使用开放式数据库连接 (ODBC) sqlcancel 函数)但没有同时发出所需数目的 ROLLBACK 和 COMMIT 语句,则会发生这种情况。取消查询并不自动回滚或提交事务。取消查询后,所有在事务内获取的锁都将保留。应用程序必须提交或回滚已取消的事务,从而正确地管理事务嵌套级。

4 .应用程序没处理完所有结果。

将查询发送到服务器后,所有应用程序必须立即完成提取所有结果行。如果应用程序没有提取所有结果行,锁可能会留在表上而SQL server阻塞其他用户。如果使用的应用程序将Transact-SQL 语句透明地提交给服务器,则该应用程序必须提取所有结果行。如果应用程序没这样做(如果无法配置它执行此操作),则可能无法解决阻塞问题。为避免此问题,可以将这些应用程序限制在报表或决策支持数据库上。

5 .分布式客户端/服务器死锁。

与常规死锁不同,分布式死锁无法由 Microsoft SQL Server? 2000 自动检测到。如果应用程序打开多个与 SQL Server 的连接并异步提交查询,则可能会发生分布式客户端/服务器死锁。

例如,一个客户端应用程序线程有两个开放式连接。该线程异步启动事务并在***个连接上发出查询。应用程序随后启动其它事务,在另一个连接上发出查询并等待结果。当 SQL Server 返回其中一个连接的结果时,应用程序开始处理这些结果。

应用程序就这样处理结果,直到生成结果的查询被另一个连接上执行的查询阻塞而导致再没有可用的结果为止。此时***个连接阻塞,无限期等待处理更多的结果。第二个连接没有在锁上SQL server阻塞,但仍试图将结果返回给应用程序。然而,由于应用程序阻塞而在***个连接上等待结果,第二个连接的结果将得不到处理。

避免SQL server阻塞方法

1 .对每个查询使用查询超时。

2 .对每个查询使用锁定超时。有关更多信息,请参见自定义锁超时。

3 .使用绑定连接。有关更多信息,请参见使用绑定连接。

4 .SQL Server 本质上是受客户端应用程序操纵的傀儡。客户端应用程序对服务器上获取的锁几乎有完全的控制(并对锁负责)。虽然 SQL Server

锁管理器自动使用锁保护事务,但这受客户端应用程序发出的查询类型和对结果的处理方式的直接鼓动。因此,大多数阻塞问题的解决方案都涉及检查客户端应用程序。

5 .阻塞问题常要求检查应用程序提交的 SQL 语句本身,以及检查与连接管理、所有结果行的处理等有关的应用程序行为本身。如果开发工具不允许显式控制连接管理、查询超时、结果处理等,阻塞问题可能得不到解决。

设计应用程序以避免SQL server阻塞的准则

1. 不要使用或设计使用户得以填写编辑框的应用程序,编辑框会生成长时间运行的查询。例如,不要使用或设计提示用户输入的应用程序,允许某些字段保留空白或允许输入通配符。这可能导致应用程序提交运行时间过长的查询,从而导致阻塞问题。

2 .不要使用或设计使用户得以在事务内输入内容的应用程序。

3 .允许取消查询。

4 .使用查询或锁定超时,防止失控查询和避免分布式死锁。

5 .立即完成提取所有结果行。

6 .使事务尽可能简短。

7 .显式控制连接管理。

8 .在所预计的并发用户全负荷下对应用程序进行应力测试。

【编辑推荐】

  1. SQL Server索引选择的引用与建议
  2. SQL Server评价索引之有效性
  3. 关于SQL Server索引密度的知识
  4. 对SQL Server聚集索引的指示描述
  5. SQL Server视图索引与索引视图指南

 

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/265646.html<

赞 (0)
管理的头像管理
上一篇2025-05-05 14:27
下一篇 2025-05-05 14:28

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注