「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。 目次 †概要 †SQL Server でのデッドロック発生時の対応方法ついて説明します。 前提知識 †基本的に、ロックのたすき掛けで発生しています。 このため、 で説明したように、SQL Serverのロッキングのメカニズムについて知っておく必要があります。 例えば、SQL Serverは、
等と言った所でしょうか。 分析方法 †ロックの確認 †「SQL Server でのロック・タイムアウト」で説明した方法で、 SQLプロファイラ †対応方法 †アプリ側の設計上の問題 †ロック法で実装されたRDBMSを利用するアプリケーションとしての設計上の問題が無いかを確認します。 更新ロックの活用 †OracleとSQL Serverの更新ロックは、「更新データの消失」を防ぐ役割で使用される。 デッドロックの回避 †更新ロックの活用以外にも、デッドロックを回避のために検討すべきことがあります。
DBMSの機能上の問題 †ロック法で実装されたRDBMSの機能を問題と考える場合、以下のような対策もあります。 エスカレーションの抑止 †ロックのエスカレーションの抑止をする。 多バージョン法への切替 †多バージョン法へ切り替える。 その他の対応 †タイムアウトと同列に扱う †レアケースであれば、ロック・タイムアウト、コマンド・タイムアウトと同様に SQL Serverの問題 †並列クエリ等、ロック以外の原因で この場合、エラー番号が異なるようです。
参考 †
Tags: :データアクセス, :SQL Server, :障害対応, :性能, :デバッグ |