タイトル通りですが、テーブル単位で設定できるロックエスカレーションの設定の確認方法をこちらにメモしておきます。
ロックエスカレーションとは?
簡単にロックエスカレーションについてざっくりと説明します。
SQL Serverでは、行単位のロックが大量に行われるようなクエリが実行された場合、場合によってはたとえば行単位のロックを、テーブル単位のロックに変更します。これをロックエスカレーションと呼んでいます。これは、ちまちまと行単位にロックをするのとテーブル一つをロックするのかによって、SQL Serverの負荷が異なるためです。テーブル単位のロックにすることで、一つロックを獲得すればOKになるのでSQL Serverとしては負荷が軽いことになります。
テーブルのロックエスカレーションの設定の確認方法
それでは、さっそく設定方法の確認ですが以下で行えます。
SELECT name, lock_escalation, lock_escalation_desc FROM sys.tables WHERE name = 'テーブル名'
私の環境で実行した結果は、以下の通りです。
それぞれのカラムの意味はざっくり以下の通りです。
カラム名 | 説明 |
---|---|
name | テーブル名 |
lock_escalation | テーブルの LOCK_ESCALATION オプションの値 0 = TABLE 1 = DISABLE 2 = AUTO |
lock_escalation_desc | lock_escalationオプションについての説明。 有効値は、TABLE、AUTO、および DISABLE |
上記の設定値の意味に関してはの説明は、今回は割愛します。以下、ALTER TABLEのドキュメントに値の意味について記載ありますので、気になる方はご参照いただければと思います。