デッドロックの問題が発生し、異なるスレッド (2 つは Web サービスと呼ばれる) によって呼び出される 2 つのストアド プロシージャが原因であることがわかりました。
- X テーブルにデータを挿入するspを挿入します。
- X テーブルのデータを削除するspを削除します。
さらに、Xテーブルの非一意かつ非クラスター化インデックスでデッドロックが発生したことを示す結果が得られました。この問題を解決するためのアイデアはありますか?
アップデート
Read/Write deadlockから、次のステートメントのためにエラーだと思います。
- insert ステートメントでは、id(クラスター化インデックス) を取得してから、非クラスター化インデックスを取得します。
- delete ステートメントでは、id の前に非クラスター化インデックスを取得します。
したがって、次のステートメントのように、delete ステートメントの id を選択する必要があります。
SELECT id FROM X WITH(NOLOCK) WHERE [condition]
PS。両方のストアド プロシージャがトランザクションで呼び出されます。
ありがとう、