表は,トランザクション1〜3が資源A〜Cにかけるロックの種別を表す。
また,資源へのロックはトランザクションの開始と同時にかけられる。
トランザクション1〜3のうち二つのトランザクションをほぼ同時に開始した場合の動きについて,適切な記述はどれか。
ここで,表中の"-"はロックなし,"S"は共有ロック,"X"は専有ロックを示す。
トランザクション\資源|A|B|C/1|S|-|X/2|S|X|-/3|X|S|-
正答2
解説
正解は2です。
この問題は、共有ロックと専有ロックの両立関係から、資源待ちが起きるかを判断できるかを問うています。
共有ロック(S)どうしは同時にかけられますが、専有ロック(X)は他のどのロックとも同時にかけられません。
先に開始したトランザクションがロックを持っている資源に、後から両立しないロックをかけようとすると待ちが生じます。
【表の読み取り】
トランザクション1は、Aに共有ロック、Cに専有ロックをかけます。
トランザクション2は、Aに共有ロック、Bに専有ロックをかけます。
トランザクション3は、Aに専有ロック、Bに共有ロックをかけます。
【選択肢別解説】
1:× トランザクション1がAに共有ロックをかけています。
後のトランザクション3はAに専有ロックをかけようとするので、待ちが生じます。
2:○ トランザクション2はAに共有ロック、Bに専有ロックをかけています。
トランザクション1はAに共有ロックをかけるので両立し、Cは誰もロックしていないので専有ロックもかけられます。
したがって、トランザクション1に資源待ちはありません。
3:× トランザクション3は、Aに専有ロックをかけようとしますが、トランザクション2の共有ロックと両立しません。
Bにも、トランザクション2の専有ロックがあるため共有ロックをかけられず、待ちが生じます。
4:× トランザクション3がAに専有ロックをかけています。
後のトランザクション1はAに共有ロックをかけようとしますが、専有ロックとは両立しないので待ちが生じます。
【ポイント】
ロックの両立性は「SとSだけが両立し、Xが絡むと待ち」と覚えます。
組合せの問題は、資源ごとに先と後のロックを並べて比べると確実です。