動的ロック

行ロックなど、レベルの低いロックを使用すると、2 つのトランザクションが同時にデータの同じ部分に対するロックを要求する可能性が減って同時実行性が高まります。同時に、ロックの数も増えるので、ロックを管理するために多くのリソースが必要になります。テーブルまたはページに対する高レベルのロックはオーバーヘッドが減りますが、同時実行性は低下します。

コストと粒度を示す図

Microsoft SQL Server データベース エンジンは、動的ロック ストラテジによって最もコストの低いロックを判断します。データベース エンジンはクエリを実行する際に、スキーマおよびクエリの特性に基づいて最適なロックを自動的に判断します。たとえば、インデックス スキャンの実行時に、インデックス内でのページレベルのロックが選択されます。これにより、ロックのオーバーヘッドを減少させることができます。

動的ロックには次の利点があります。

  • データベースの管理が簡略化されます。データベース管理者がロック エスカレーションのしきい値を調整する必要はありません。

  • パフォーマンスが高まります。データベース エンジンによりタスクに適したロックが使用されるので、システム オーバーヘッドが最小になります。

  • アプリケーション開発者が開発に専念できます。ロックはデータベース エンジンにより自動的に調整されます。

SQL Server 2008 では、LOCK_ESCALATION オプションの導入に伴い、ロックのエスカレーションの動作が変更されています。詳細については、ALTER TABLE の LOCK_ESCALATION オプションを参照してください。