IPA過去問ドリル

令和4年度 春期 システムアーキテクト試験 午前Ⅱ 問24

テクノロジ/データベース

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(B) | - t4 | - | - | - | select(A) t5 | - | - | - | update(B) t6 | select(C) | - | - | - t7 | - | select(C) | - | - t8 | - | update(C) | - | - t9 | - | - | update(A) | - t10 | commit | - | - | - 〔トランザクションの待ちグラフ〕4 個のノード a,b,c,d は,それぞれ T1~T4 のいずれかに対応する(図を参照)。ノード間の矢印は,a→d,b→a,b→c,c→b,c→d である。

令和4年度 春期 システムアーキテクト試験 午前Ⅱ 問24の図

出典:令和4年度 春期 システムアーキテクト試験 午前Ⅱ 問24

正解:イ

解説

トランザクションの待ちグラフは,各時刻のロック要求とその時点でのロック保有状況から,要求側(待つ側)→保有側(待たれる側)の矢印で作成します。表のスケジュールから,t5でT4がupdate(B)を要求した時点で,Bは既にT2とT3が共有ロックを保持しているため,T4はT2とT3の両方を待ちます(T4→T2,T4→T3)。t8でT2がupdate(C)を要求した時点で,Cは既にT1とT2(自身)が共有ロックを保持しており,他の保持者であるT1を待ちます(T2→T1)。t9でT3がupdate(A)を要求した時点で,Aは既にT1とT4が共有ロックを保持しているため,T3はT1とT4の両方を待ちます(T3→T1,T3→T4)。以上をまとめると,t10の直前に存在する待ち関係は,T4→T2,T4→T3,T2→T1,T3→T1,T3→T4の五つ(合計5本)です。この対応関係を図中のノードに当てはめると,他のトランザクションから待たれるだけで自身は何も待っていないT1は,出ていく矢印をもたないdに対応します。また,T3とT4は互いに待ち合う関係(T3→T4かつT4→T3)にあるため,双方向の矢印で結ばれたb・cの組に対応します。残るT2は,T1だけを待つ(出ていく矢印が1本で,T4から待たれる入ってくる矢印が1本)ので,出入りとも矢印が1本ずつのaに対応します。したがって,aに当てはまるトランザクションはT2です。

選択肢ごとの解説

  • 誤り。T1はcommit直前まで他のトランザクションを待つ側にはならず,むしろT2とT3から待たれる側(入ってくる矢印だけをもつd)に対応するため,aには当てはまりません。
  • 正しい。T2はt8でCの解放をT1に対して待つ一方,T4からはB解放を待たれる関係にあり,出入りとも矢印が1本ずつのaに対応します。
  • 誤り。T3はt9でT1とT4の両方を待ち,かつT4から待たれる関係(T3⇄T4)にあり,出入りとも矢印が2本のb又はcに対応するため,aには当てはまりません。
  • 誤り。T4はt5でT2とT3の両方を待ち,かつT3から待たれる関係(T3⇄T4)にあり,出入りとも矢印が2本のb又はcに対応するため,aには当てはまりません。
システムアーキテクトの過去問を演習モードで解く