平成25年度 春期 データベーススペシャリスト試験 午前Ⅱ 問10
テクノロジ/データベースt1~t10の時刻でスケジュールされたトランザクションT1~T4がある。時刻t10でT1がcommitを発行する直前の,トランザクションの待ちグラフを作成した。aに当てはまるトランザクションはどれか。ここで,select(X)は共有ロックを掛けて資源Xを参照することを表し,update(X)は専有ロックを掛けて資源Xを更新することを表す。これらのロックは,commitされるまでアンロックされないものとする。また,トランザクションの待ちグラフの矢印は,Ti→Tjとしたとき,Tjがロックしている資源のアンロックを,Tiが待つことを表す。 〔トランザクションのスケジュール〕 時刻 | T1 | T2 | T3 | T4 t1 | select(A) | - | - | - t2 | - | select(B) | - | - t3 | - | - | select(A) | - t4 | - | - | - | select(B) t5 | - | - | - | update(B) t6 | select(C) | - | - | - t7 | - | select(C) | - | - t8 | - | update(C) | - | - t9 | - | - | update(A) | - t10 | commit | - | - | - (注:本サイトでは原問題の表を文字表記に変換しています) 〔トランザクションの待ちグラフ〕待ちグラフのノードa~dは,それぞれT1~T4のいずれかに対応する(図を参照)。ノード間の矢印は,b→a,a→d,c→dである。

出典:平成25年度 春期 データベーススペシャリスト試験 午前Ⅱ 問10
- アT1
- イT2
- ウT3
- エT4
正解:イ
解説
各時刻でのロック状況を整理すると,t1でT1がAにS(共有)ロック,t3でT3もAにSロックを掛ける(共有ロックなので共存可)。t2でT2がBにSロック,t4でT4もBにSロックを掛け(共存可),t5でT4がBをupdate(専有ロック)しようとするが,T2がBにSロックを保持したままであるため,T4はT2の解放を待つ(T4→T2)。t6でT1がCにSロック,t7でT2もCにSロック(共存可),t8でT2がCをupdate(専有ロック)しようとするが,T1がCにSロックを保持したままであるため,T2はT1の解放を待つ(T2→T1)。t9でT3がAをupdate(専有ロック)しようとするが,T1がAにSロックを保持したままであるため,T3はT1の解放を待つ(T3→T1)。以上より,待ちグラフの矢印は,T4→T2,T2→T1,T3→T1の三本となる。図の待ちグラフの矢印は「b→a,a→d,c→d」であるから,これと対応付けると,a=T2,b=T4,c=T3,d=T1となる。したがって,aに当てはまるトランザクションはT2である。
選択肢ごとの解説
- ア誤り。上記の対応付けから,T1はd(他のトランザクションから待たれる側)に当たり,aには当たらない。
- イ正しい。T2は,T4から待たれる側であると同時に,自らはT1の解放を待つ側でもあり,これは図の「b→a→d」の位置関係(aがbから待たれ,aがdを待つ)と一致する。したがって,aに当てはまるのはT2である。
- ウ誤り。T3は,自らはT1の解放を待つだけで,他のトランザクションから待たれることはないため,図のcの位置に対応し,aには当たらない。
- エ誤り。T4は,自らはT2の解放を待つだけで,他のトランザクションから待たれることはないため,図のbの位置に対応し,aには当たらない。