ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

SQL Serverのテーブルのロックエスカレーションの設定の確認方法

タイトル通りですが、テーブル単位で設定できるロックエスカレーションの設定の確認方法をこちらにメモしておきます。

ロックエスカレーションとは?

簡単にロックエスカレーションについてざっくりと説明します。

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のドキュメントに値の意味について記載ありますので、気になる方はご参照いただければと思います。