解决内部并行查询死锁

war*_*ior 9 sql-server deadlock sql-server-2017

我们在生产环境中遇到了死锁。看来受害者和赢家是同一个spid的。我们每天重建/重新组织索引,我们没有找到任何丢失的索引。

你们有没有遇到过这种情况,如果有,你们是如何解决的?任何建议表示赞赏。

这是死锁图: 在此处输入图片说明

此外,这里是

我们使用的是 SQL Server 2017 SP2。

Dav*_*oft 10

首先,查询内并行死锁始终是 SQL Server 的错误。除了更新 SQL Server、打开支持案例、抑制并行性(例如添加 MAXDOP 1 提示)或尝试获取使用更简单计划的查询之外,您无法修复它们。

在 EF 中的这种情况下,如果可以,请将UseDatabaseNullSemantics设置为 true。否则,EF 查询转换器会生成模拟 C# 空值比较语义的 TSQL 查询。这将清除查询中的 NULL 处理。

除此之外,这个查询似乎是一个视图,与另一个表连接,然后在它之上进行分页查询。所以如果你能弄清楚意图是什么,可能可以简化。