有人可以帮我阅读/理解这个死锁图吗?
我不明白为什么进程75要求锁定他已经锁定的对象?
答案 0 :(得分:8)
根据一篇博文文章,我发现“Exchange事件”的存在表明您的问题来源可能在您的查询中是并行的。
Today's Annoyingly-Unwieldy Term: "Intra-Query Parallel Thread Deadlocks"
上面的文章更详细,但是妙语是:
解决方法#1:添加索引或改进查询以消除对并行性的需求。在大多数情况下,在查询中使用并行性表示您具有适当索引不支持的非常大的扫描,排序或连接。如果您调整查询,通常会发现最终得到的更快更有效的计划不使用并行性,因此不会遇到此类问题。当然,在某些查询中(特别是DSS / OLAP类型的查询),可能很难消除所有大型扫描。
解决方法#2:在查询结束时使用“OPTION(MAXDOP 1)”查询提示强制执行单线程执行。如果您无法修改查询,则可以使用计划指南将提示应用于任何查询。
您可能想尝试一下,看看是否有任何改进。