摘要:
我们知道,可以使用SQL Server自带的Profiler工具来跟踪死锁信息。但这种方式有一个很大的敝端,就是消耗很大。据国外某大神测试,profiler甚至可以占到服 务器总带宽的35%,所以,在一个繁忙的系统中,使用profiler显然不是一个好主意,下面我介绍两种消耗比较少的方法。其中第二种的消耗最小,在最 繁忙的系统中也可使用。第一种最为灵活,可满足多种应用。方法一:利用SQL Server代理(Alert+Job)具体步骤如下:1.首先使用下面的命令,将有关的跟踪标志启用。[c-sharp] view plaincopyDBCCTRACEON(3605,1204,1222,-1)说 阅读全文
posted @ 2013-07-14 23:11
勤奋的码农
阅读(893)
评论(0)
推荐(0)
摘要:
当一个用户会话(会话1)已经锁定了一个资源,而另一个会话(会话2)想要修改该资源,并且会话2也锁定了会话1想要修改的资源时,就会出现“死锁”(deadlocking)。在另一方释放资源前,会话1和会话2都不可能继续。所以,SQL Server会选择死锁中的一个会话作为“死锁牺牲品”。注意:死锁牺牲品的会话会被杀死,事务会被回滚。注意:死锁与正常的阻塞是两个经常被混淆的概念。发生死锁的一些原因:1、应用程序以不同的次序访问表。例如会话1先更新了客户然后更新了订单,而会话2先更新了订单然后更新了客户。这就增加了死锁的可能性。2、应用程序使用了长时间的事务,在一个事务中更新很多行或很多表。这样增加了 阅读全文
posted @ 2013-07-14 23:10
勤奋的码农
阅读(946)
评论(0)
推荐(0)
摘要:
在两个或多个SQL Server进程中,每一个进程锁定了其他进程试图锁定的资源,就会出现死锁,例如,进程process1对table1持有1个排它锁(X),同时process1对table2请求1个排它锁(X),进程process2对table2持有1个排它锁(X),同时process2对table1请求1个排它锁(X)类似这种情况,就会出现死锁,除非当某个外部进程断开死锁,否则死锁中的两个事务都将无限期等待下去。 Microsoft SQL Server 数据库引擎死锁监视器定期检查陷入死锁的任务。 如果监视器检测到循环依赖关系,将选择其中一个任务作为牺牲品(通常是选择占资源比较小的进程作为 阅读全文
posted @ 2013-07-14 23:08
勤奋的码农
阅读(841)
评论(0)
推荐(0)
摘要:
简介 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的。理解死锁首先需要对死锁所涉及的相关观念有一个理解。一些基础知识 要理解SQL Server中的死锁,更好的方式是通过类比从更大的面理解死锁。比如说一个经典的例子就是汽车(主体)对于道路(资源)的征用,如图1所示。 图1.对于死锁的直观理解 在图1的例子中,每队汽车都占有一条道路,但都需要另外一队汽车所占有的另一条道路,因此互相阻塞,谁都无法前行,因此造成了死锁。由这个简单的例子可以看出,发生死锁需要四个必要条件,如下:1)互斥条件: 主体对于资源是独占的,图1中每条汽车道只能跑一队汽车,不能跑第二队。2)请求和等待条件: 指主. 阅读全文
posted @ 2013-07-14 23:06
勤奋的码农
阅读(501)
评论(1)
推荐(0)
摘要:
使用跟踪标记 1204--打开跟踪标记 DBCC TRACEON (1204,-1)--关闭跟踪标记 DBCC TRACEOFF (1204,-1)处于死锁状态时,跟踪标记 1204 在等待的线程、存在等待线程的资源和控制这些资源的线程间画出相关循环。跟踪标记 1204 报告中的术语尽管根据所涉及的资源,跟踪标记 1204 会返回不同信息,但是报告通常会包含如下术语:Node 节点:x 在死锁的链中表示项目号 (x)。List 列表锁的所有者可能是如下列表中的一部分:授权、转换和等待。Grant List 授权列表列举资源的当前所有者。转换列表列举要把锁转换到较高级别的当前所有者。Wait L 阅读全文
posted @ 2013-07-14 22:40
勤奋的码农
阅读(976)
评论(0)
推荐(0)
摘要:
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[sp_who_lock]')andOBJECTPROPERTY(id,N'IsProcedure')=1)dropprocedure[dbo].[sp_who_lock]GOusemastergocreateproceduresp_who_lockasbegindeclare@spidint,@blint,@intTransactionCountOnEntryint,@intRowcountint,@intCountPropertiesint 阅读全文
posted @ 2013-07-14 22:39
勤奋的码农
阅读(541)
评论(0)
推荐(0)