LOCK ESCALATION オプション(SQL Server でロック エスカレーションの禁止をテーブル単位で行う)

ラクル社には、「SQL Server はロック エスカレーションが発生する」、と言って SQL Server を叩いている人たちがたくさんいますが、それは間違いです。ロック エスカレーションは禁止することができますし、処理によってはロック エスカレーションが発生してくれた方が性能向上します。オラクル社の人たちは、不安を煽っているだけの、単なる(Oracke Database を売りたいだけの)セールス トークをしているにすぎません。営業さんによっては SQL Server にロック エスカレーションの禁止オプションがあることを知らないケースもあります(技術力不足)。


SQL Server でロック エスカレーションを禁止するには、以前のバージョン(SQL Server 2005 以前)では、トレース フラグ 1211 をセットします。これでロック エスカレーションを禁止することができます。
SQL Server 2008 の場合は、LOCK ESCALATION オプションがサポートされたので、テーブル単位でロック エスカレーションの禁止を行うことができます。これは次のように利用することができます。

-- ロック エスカレーションを禁止
ALTER TABLE テーブル名
 SET ( LOCK_ESCALATION = DISABLE )


なお、そのほかの SQL Server 2008 の新機能の具体的な利用方法については、弊社執筆の SQL Server 2008 自習書シリーズ(下記 URL)の「SQL Server 2008 の注目の新機能をイチ早く試してみよう! 」編を参考にしてみてください。
http://www.microsoft.com/japan/sqlserver/2008/self-learning/default.mspx