トランザクションA(処理A1→処理A2の順に実行する)とトランザクションB(処理B1→処理B2の順に実行する)が、データベースの資源SとTに対し、次のように 処理A1→処理B1→処理A2→処理B2の順で専有ロックを要求する場合、デッドロックが発生する資源の組合せはどれか。
なお、ロックは処理開始時にかけ、トランザクション終了時に解除する。
答え イ
【解説】
デッドロックが発生するのは2つのトランザクションで2つの資源を占有ロックするとき、異なる順番で占有ロックを行うと発生するので
になります。
処理A1で資源Sを占有ロック、処理B1で資源Tを占有ロックし、処理A2で資源Tを占有ロックしたいが資源TはトランザクションBが占有ロックしているので解放待ち、処理B2で資源Sを占有ロックしたいが資源SはトランザクションAが占有ロックしているので解放待ちでデッドロックになります。