共有ロックと専有ロック
トランザクション T1 がデータ X に共有ロックを獲得している。このとき,別のトランザクション T2 が同じデータ X にロックを要求した場合の扱いとして,適切なものはどれか。ここで,X には T1 以外のロックは掛けられていないものとする。
- アT2 は,共有ロックも専有ロックも直ちに獲得できる。
- イT2 は,共有ロックは直ちに獲得できるが,専有ロックは T1 がロックを解放するまで待たされる。
- ウT2 は,専有ロックは直ちに獲得できるが,共有ロックは T1 がロックを解放するまで待たされる。
- エT2 は,共有ロックも専有ロックも T1 がロックを解放するまで待たされる。
正解と解説を見る
正解 イ
この問題の基礎知識
- 共有ロック(読取りロック)は,データを読み取る間に他のトランザクションによる更新を防ぐロックであり,複数のトランザクションが同じデータに同時に掛けられる。
- 専有ロック(排他ロック)は,データを更新する間に他のトランザクションによる読取りと更新を防ぐロックである。
- ロックの両立性は,共有ロック同士だけが両立し,共有ロックと専有ロック,専有ロック同士は両立しない。両立しないロックの要求は,先に掛けられたロックが解放されるまで待たされる。
アT2 は,共有ロックも専有ロックも直ちに獲得できる。
専有ロックは他のトランザクションがロックを掛けている間は獲得できない。T1 の共有ロックがあるので,T2 の専有ロックの要求は待たされる。
イT2 は,共有ロックは直ちに獲得できるが,専有ロックは T1 がロックを解放するまで待たされる。正解
共有ロック同士は両立するので T2 も共有ロックを獲得して読み取れる。一方,専有ロックは共有ロックとも両立しないため,T1 がロックを解放するまで待たされる。
ウT2 は,専有ロックは直ちに獲得できるが,共有ロックは T1 がロックを解放するまで待たされる。
共有ロックと専有ロックの両立性の関係が逆である。共有ロック同士は両立するので同時に獲得できるが,専有ロックは共有ロックを含む他のどのロックとも両立しない。
エT2 は,共有ロックも専有ロックも T1 がロックを解放するまで待たされる。
T1 が専有ロックを獲得している場合の扱いである。共有ロックは複数のトランザクションが同時に獲得できる。
検証用の出典一部照合
J. Gray, A. Reuter, Transaction Processing: Concepts and Techniques照合の根拠(2 件)
- イ(正解)・ア(誤り): 共有ロックが掛かっている資源には専有(排他)ロックを付与できない
For example, if a shared lock is held on a resource, and an exclusive lock is requested, the table entry is "false", indicating that the lock must not be granted.
RFC 4918 (WebDAV) · Section 9.10.5 Lock Compatibility Table(新しいタブで開きます) - イ(正解)・ウ/エ(誤り): 共有ロックは複数の主体が同時に獲得できる
A shared lock allows multiple principals to receive a lock.
RFC 4918 (WebDAV) · Section 6.2 Exclusive vs. Shared Locks(新しいタブで開きます)
ロックの両立性(共有同士は両立,共有と専有は両立しない)は RFC 4918 の WebDAV ロックで裏付けたが,これはデータベースのトランザクションのロックではなく,両立しない要求が「待たされる」点(WebDAV では付与を拒否する)は読める一次資料で確認できない。Gray & Reuter は書籍