マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

SQL Serverでは、ロックのリソースが多くなると、
ロック エスカレーションという処理が走り、ロックの粒度を、

『行』 ⇒ 『ページ』 ⇒ 『テーブル』

と大きくすることで、ロックリソースの削減を図り、全体のパフォーマンスを改善しようとする。

問題

SQL Serverでは、ユーザ プログラムの処理で使用できる、最も低い分離レベルである、コミット済み読み取り(Read Committed)を適用した場合でも、
参照処理で一時的なロック(共有ロック)を適用するため、参照処理が、大量の行ロックを獲得する場合は、ロック エスカレーションが発生する可能性がある。

対策

ここでは、

の3点について説明する。

ロック エスカレーション発生の閾値

ロック エスカレーション発生の閾値は、具体的には次のような数値をベースにしている。
※ ただし、この閾値はベースとなる値を示すだけであり、実際は統計情報に左右される。

ロック エスカレーション発生抑止方法

トレース フラグ 1224 or 1211 を有効にして、ロック エスカレーションを無効にすることもできる。
ただし、トレース フラグ1211でロック エスカレーションを無効にした場合、下記の問題が発生するため、推奨はできない。

ロック エスカレーションを抑止した際に発生する問題

トレース フラグ1211でロック エスカレーションを抑止した場合、
ロックリソースの不足に起因する『エラー1204』が発生する可能性がある。


Tags: :データアクセス, :SQL Server, :障害対応, :性能, :デバッグ


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS