SQL Server死锁图-表,页或行锁定?


10

如果死锁图中的锁是表,页面或行级别,有什么方法可以解密?我从图表中获得了我需要的所有信息,包括隔离级别(2),但我也确实想知道这一点。

感谢任何能提供帮助的人!

Answers:


13

在死锁图XML中,您将看到类似以下内容:

<deadlock-list>
  <deadlock victim="...">
    <process-list>
      <process id="..." ... waitresource="X:..."
...

X是有趣的一点,你有兴趣在可能的值是:

  • RID 用于行ID(行级别锁定)
  • PAG 用于页面级锁定
  • OBJECT(可以进一步限定TAB表锁)

文档中还列出了其他几种。


谢谢,这很有用。尽管在我的图表中,我有2个进程,它们似乎正在使用不同的页面:waitresource =“ RID:21:1:2588:0” waitresource =“ RID:21:1:2699:1”因此,如果他们使用的是不同页面,那么它们不能在同一行上发生冲突,对吗?因为我在此查询上使用了WITH(ROWLOCK)提示。
tuseau 2011年

2
如果进程1持有2699并希望2588,而进程2持有2588并希望2699,则将导致死锁。请记住,死锁意味着循环依赖。
Gaius
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.