ロックエスカレーションを禁止する設定
2015/7/5
文書番号:20329
ひとつのテーブルに対して行単位のロックを大量に実行するよりもテーブル単位でひとつのロックを実行したほうがレスポンスがよくなることがあります。
ただし、同時実行時の競合が発生する可能性は大きくなります。
通常はロックエスカレーションが有効になっていますがロックエスカレーションを禁止したい場合には以下のように設定できます。
ロックエスカレーションをテーブル単位で禁止する設定
禁止した設定を元に戻す設定
ロックエスカレーションの設定を確認する
※LOCK_ESCALATION,LOCK_ESCALATION_DESC列の値について
--ロックエスカレーションを禁止する
ALTER TABLE テーブル名
SET ( LOCK_ESCALATION = DISABLE )
--ロックエスカレーションの設定を元に戻す
ALTER TABLE テーブル名
SET ( LOCK_ESCALATION = TABLE )
--ロックエスカレーションの設定を確認する
SELECT NAME
,LOCK_ESCALATION
,LOCK_ESCALATION_DESC
LOCK_ESCALATION | LOCK_ESCALATION_DESC |
---|---|
0 | TABLE(初期値) |
1 | DISABLE |
2 | AUTO |
【参考情報】
[SQL Server]ロックのエスカレーション (データベース エンジン)
https://technet.microsoft.com/ja-jp/library/ms184286(v=sql.105).aspx
[SQL Server]ALTER TABLE (Transact-SQL)
https://msdn.microsoft.com/ja-jp/library/ms190273(v=sql.120).aspx
https://technet.microsoft.com/ja-jp/library/ms184286(v=sql.105).aspx
[SQL Server]ALTER TABLE (Transact-SQL)
https://msdn.microsoft.com/ja-jp/library/ms190273(v=sql.120).aspx