t1〜t10の時刻でスケジュールされたトランザクションT1〜T4がある。時刻t10でT1がcommitを発行する直前の、トランザクションの待ちグラフを作成した。aに当てはまるトランザクションはどれか。ここで、select(X)は共有ロックを掛けて資源Xを参照することを表し、update(X)は専有ロックを掛けて資源Xを更新することを表す。これらのロックは、commitされるまでアンロックされないものとする。また、トランザクションの待ちグラフの矢印は、Ti→Tjとしたとき、Tjがロックしている資源のアンロックを、Tiが待つことを表す。 〔トランザクションのスケジュール〕 t1: T1がselect(A) t2: T2がselect(B) t3: T3がselect(A) t4: T4がselect(B) t5: T4がupdate(B) t6: T1がselect(C) t7: T2がselect(C) t8: T2がupdate(C) t9: T3がupdate(A) t10: T1がcommit 〔トランザクションの待ちグラフ〕a→d、b→a、c→d の循環を含まないグラフ(aはbから矢印を受け、dへ矢印を出す。cもdへ矢印を出す)。

専有ロック要求が既存の共有ロックの解放を待つ関係を辺にする

データベーススペシャリスト試験2019年度 春期 午前II10/トランザクション管理 / ロック

待ちグラフ:ノードa, b, c, dがあり、矢印は a→d(aがdを待つ)、b→a(bがaを待つ)、c→d(cがdを待つ)。
待ちグラフ:ノードa, b, c, dがあり、矢印は a→d(aがdを待つ)、b→a(bがaを待つ)、c→d(cがdを待つ)。
時刻T1T2T3T4
t1select(A)---
t2-select(B)--
t3--select(A)-
t4---select(B)
t5---update(B)
t6select(C)---
t7-select(C)--
t8-update(C)--
t9--update(A)-
t10commit---

選択肢

正解と解説

正解: T2

共有ロックのままなら共存できるが、専有ロックを掛けようとすると他者の共有ロックの解放を待つことになる。BへのT4の更新はT2の共有ロックを、CへのT2の更新とAへのT3の更新はいずれもT1の共有ロックを待つ。したがって待ちの向きはT4→T2、T2→T1、T3→T1となり、矢印を1本出しつつ1本受けている位置に入るのはT2である。

選択肢ごとの解説

出典:平成31年度 春期 データベーススペシャリスト試験 午前II 問10(IPA)

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。