7

有人可以帮我阅读/理解这个死锁图吗?

我不明白为什么进程 75 请求锁定他已经锁定的对象?

死锁图

4

1 回答 1

11

根据一篇博客文章,我发现“交换事件”的存在表明您的问题的根源可能是您的查询中的并行性。

当今令人讨厌且不实用的术语:“查询内并行线程死锁”

上面的文章更详细,但重点是:

解决方法 #1:添加索引或改进查询以消除对并行性的需求。在大多数情况下,在查询中使用并行性表明您有一个非常大的扫描、排序或连接,而适当的索引不支持这些操作。如果您调整查询,您通常会发现您最终会得到一个更快、更有效的计划,该计划不使用并行性,因此不会出现此类问题。当然,在某些查询(尤其是 DSS/OLAP 类型的查询)中,可能难以消除所有大型扫描。

解决方法 #2: 在查询结束时使用“OPTION (MAXDOP 1)”查询提示强制单线程执行。如果您无法修改查询,则可以使用计划指南将提示应用于任何查询。

您可能想尝试一下,看看是否有任何改进。

于 2011-09-01T08:54:40.577 回答