web-dev-qa-db-ja.com

内部並列クエリのデッドロックの解決

本番環境でデッドロックが発生しています。犠牲者と勝者のように思われる同じspidのです。私たちは毎日インデックスを再構築/再編成し、不足しているインデックスを見つけることはありません。

このシナリオに遭遇したことはありますか?任意の提案をいただければ幸いです。

これがデッドロックグラフです: enter image description here

さらに、ここにあります

SQL Server 2017 SP2を使用しています。

4
din

まず、クエリ内並列処理のデッドロックは常にSQL Serverのバグです。サポートケースを開いたり、並列処理を抑制(たとえば、MAXDOP 1ヒントを追加)したり、より単純なプランを使用するクエリを取得したりする以外に、それらを修正するためにできることは多くありません。

この場合、EFでは、可能であれば seDatabaseNullSemantics をtrueに設定します。それ以外の場合、EFクエリトランスレータは、C#null比較セマンティクスをエミュレートするTSQLクエリを生成します。これにより、クエリのNULL処理がクリーンアップされます。

それ以外は、このクエリは、別のテーブルと結合されたビューのように見え、その上にページングクエリがあります。したがって、意図が何であるかを理解できれば、おそらく簡略化できます。