死锁图解释

时间:2018-07-25 16:40:24

标签: sql sql-server sql-server-2016

我们有SQL Server 2016。

我们遇到了这个死锁问题,我们对死锁图中的内容一无所知。

这是我们对此的解释:

有问题的两个进程没有互相等待。尽管他们已经是该锁的所有者,但他们正在等待自己,并尝试在同一资源上获得相同的锁。

我认为这种解释不正确。
有知识的人可以解释一下这里发生了什么吗?
隔离级别为READ_COMMITTED。

如果可以在这里解释每一个细节,那将非常有帮助。

非常感谢。

enter image description here

2 个答案:

答案 0 :(得分:0)

当两个进程试图获取某个数据对象时发生死锁,但是只要另一个进程正在运行,每个进程就无法完成。 SQL Server选择一个运行,然后选择一个作为受害者。

在您的图片中,似乎8557c42ca8进程对某物具有共享锁,而d468进程对某物具有排他锁。每个过程也是一个等待者,正在等待过程。因此,只要其中一个进程释放了锁,任何一个进程都无法继续进行,则它们处于无限循环中。

答案 1 :(得分:0)

  

有问题的两个进程没有互相等待。他们在等自己

不。每个会话都拥有一个密钥的锁,并等待另一个会话锁定的密钥。

  

更博学的人可以解释一下这里发生了什么吗?

您需要发布其余的死锁图,表定义(包括索引)以及每个会话从其事务开始到死锁运行的代码。