来自2个存储过程的2个查询之间的死锁
问题描述:
我有这个奇怪的死锁问题,一直在窃听我。该方案如下:来自2个存储过程的2个查询之间的死锁
按照照片,第二存储过程不能,直到它在表中被第一次插入更新该锦标赛数字数据。在这种情况下它怎么可能会陷入僵局?我怎样才能重现它并避免它呢?
谢谢。
第二截图:
答
查看主要问题的意见的前同步。这里的问题是两个表(A
和B
)以不同的顺序,因此发生这样的事情:
- SP1完成并释放ID N1。
- SP2采用id n1并锁定表
B
。 - SP1以新号码开始并锁定表
A
。然后尝试锁定表B
但SP2有它。 - SP2现在试图锁定表
A
,但SP1有它。
僵局
注:这基本上是每一个僵局如何发生的围绕它只是一些复杂的绒毛。这是关于锁定表格并释放它们的顺序。如果所有内容都以相同的顺序锁定和释放,则永远不应该发生死锁。
我们可以看到特效? –
没有办法让我们用给出的信息100%回答这个问题,但我猜测该图不包括链接表,那些表导致了死锁。另一个可能的原因是SP2正在更新多行并进行一次更新,但在等待下一次更新时不释放表锁。 – Hogan
@AaronDietz - 更新后,我添加了第二张照片。 – Claudio