DBAtlas · データベース運用アトラス

1205: Transaction (Process ID) was deadlocked on lock resources with another process and has been chosen as the deadlock victim(デッドロックの犠牲者として選択された)

SQL Server

意味

2 つ以上のトランザクションが互いに相手の保持するロックを待っている (デッドロック)。循環を断ち切るため、SQL Server は 1 つのトランザクションを犠牲者として選び、ロールバックする。

原因

テーブル/行を異なる順序でロックするトランザクション、長時間実行されるトランザクション、インデックスの欠如による広範なスキャン、ロックエスカレーション、高い同時実行が典型的な原因。

対処方法

アプリケーションでエラー 1205 を捕捉し、トランザクションを自動で再試行する。すべてのトランザクションで同じ順序でオブジェクトにアクセスし、トランザクションを短く保つ。デッドロックグラフを調べる: 詳細には拡張イベント (system_health セッション) またはトレースフラグ 1222 を使う。適切なインデックスを追加してスキャンとロックを減らす。必要なら READ COMMITTED SNAPSHOT (RCSI) 分離レベルを評価する。

DBAtlas で開く →

同じデータベースの他の項目