ロックの互換性により、複数のトランザクションが同じリソースのロックを同時に獲得できるかどうかが制御されます。リソースが別のトランザクションによって既にロックされている場合、要求されたロックのモードと既存のロックのモードに互換性がある場合のみ、新しいロック要求の許可が可能になります。要求されたロックのモードと既存のロックとの互換性がない場合、新しいロックを要求しているトランザクションは、既存のロックが解除されるか、またはロックがタイムアウトするのを待機します。たとえば、排他ロックと互換性があるロック モードはありません。排他 (X) ロックが保持されている間は、その排他 (X) ロックが解除されるまで、他のトランザクションはこのリソースに対してどの種類のロック (共有、更新、排他) も獲得できません。リソースに共有 (S) ロックが適用されている場合は、他のトランザクションもそのアイテムの共有ロックまたは更新 (U) ロックを獲得できます。最初のトランザクションが完了している必要はありません。ただし、共有ロックが解除されないと、他のトランザクションは排他ロックを獲得できません。
次の表に、最も一般的に使用されるロック モードの互換性を示します。
|
|
既に許可されているモード
|
|
|
|
|
|
|---|
|
要求されたモード
|
IS
|
S
|
U
|
IX
|
SIX
|
X
|
|
インテント共有 (IS)
|
可
|
可
|
可
|
可
|
可
|
不可
|
|
共有 (S)
|
可
|
可
|
可
|
不可
|
不可
|
不可
|
|
更新 (U)
|
可
|
可
|
不可
|
不可
|
不可
|
不可
|
|
インテント排他 (IX)
|
可
|
不可
|
不可
|
可
|
不可
|
不可
|
|
インテント排他付き共有 (SIX)
|
可
|
不可
|
不可
|
不可
|
不可
|
不可
|
|
排他 (X)
|
不可
|
不可
|
不可
|
不可
|
不可
|
不可
|
メモ : |
|---|
|
インテント排他 (IX) はすべての行ではなく一部の行を更新することを指定するものなので、IX ロックは IX ロック モードと互換性があります。一部の行を読み取ったり更新したりする他のトランザクションも、他のトランザクションによって更新されている同じ行でない限り、許可されます。
|
次の表を使用すると、Microsoft SQL Server で使用できるすべてのロック モードの互換性を確認できます。
概念
ロックの粒度と階層
ロック モード
キー範囲ロック
ヘルプおよび情報
SQL Server 2008 の参考資料の入手