SQL Server 2000中正确的检测死锁与结束死锁

数据库 SQL Server
此文章主要介绍的是在SQL Server 2000数据库中正确的检测与结束死锁的实际操作步骤,以下是文章的具体介绍,望你浏览完以下的内容会有所收获。

此文章主要介绍的是在SQL Server 2000数据库中正确的检测与结束死锁的实际操作步骤,在 Microsoft® SQL Server™ 2000数据库中,单个用户会话都会有一个或多个代表它运行的线程。每个线程可能获取或等待获取各种资源,如:

锁。

 

与并行查询执行相关的资源(与交换端口相关联的处理协调器、发生器和使用者线程)。

线程。

内存。

上述这些资源除内存外都参与 SQL Server 死锁检测方案。对于内存,SQL Server 使用基于超时的机制,该机制由 sp_configure 中的 query wait 选项控制。

在 SQL Server 2000 中,死锁检测由一个称为锁监视器线程的单独的线程执行。在出现下列任一情况时,锁监视器线程对特定线程启动死锁搜索:

 

线程已经为同一资源等待了一段指定的时间。锁监视器线程定期醒来并识别所有等待某个资源的线程。如果锁监视器再次醒来时这些线程仍在等待同一资源,则它将对等待线程启动锁搜索。

 

线程等待资源并启动急切的死锁搜索。

SQL Server 通常只执行定期死锁检测,而不使用急切模式。因为系统中遇到的死锁数通常很少,定期死锁检测有助于减少系统中死锁检测的开销。

当锁监视器对特定线程启动死锁检测时,它识别线程正在等待的资源。然后,锁监视器查找特定资源的拥有者,并递归地继续执行对那些线程的死锁搜索,直到找到一个循环。用这种方式识别的循环形成一个死锁。

 

在识别死锁后,SQL Server 通过自动选择可以打破死锁的线程(死锁牺牲品)来结束死锁。SQL Server 回滚作为死锁牺牲品的事务,通知线程的应用程序(通过返回 1205 号错误信息),取消线程的当前请求,然后允许不间断线程的事务继续进行。

 

SQL Server 通常选择运行撤消时花费最少的事务的线程作为死锁牺牲品。另外,用户可以使用 SET 语句将会话的 DEADLOCK_PRIORITY 设置为 LOW。DEADLOCK_PRIORITY 选项控制在死锁情况下如何衡量会话的重要性。如果会话的设置为 LOW ,则当会话陷入死锁情况时将成为***牺牲品。

 

 

 

上述的相关内容就是对在SQL Server 2000数据库中检测和结束死锁的描述,希望会给你带来一些帮助在此方面。

【编辑推荐】

  1. SQL Server非聚集索引概述
  2. 用SQL Server索引密度对行数进行评估
  3. 关于SQL Server索引密度的知识
  4. SQL Server索引直方图的内容描述
  5. SQL Server评价索引之有效性
责任编辑:佚名 来源: 网络转载
相关推荐

2010-07-06 10:08:57

SQL Server

2010-07-07 13:58:25

SQL Server死

2010-06-18 13:14:26

SQL Server

2010-09-14 15:34:29

sql server死

2010-11-09 17:04:20

SQL Server死

2010-06-30 14:15:08

SQL Server死

2010-07-02 10:53:32

SQL Server死

2010-11-09 17:02:43

SQL Server死

2011-04-02 17:08:44

SQL Server死锁

2014-03-17 10:34:48

SQL Server

2010-11-09 16:29:39

SQL Server死

2010-11-09 16:37:25

Sql server死

2010-11-09 16:20:46

SQL Server死

2011-03-14 16:42:54

DB2 UDB监控死锁

2010-08-26 10:45:33

死锁SQL Server

2023-08-15 08:26:34

SQL Server查找死锁

2011-02-28 13:19:50

SQL Server SQL死锁

2010-07-08 15:55:25

SQL Server

2011-03-08 09:27:34

SQL Server数死锁

2009-03-30 10:56:58

SQL Server数据库死锁数据库
点赞
收藏

51CTO技术栈公众号