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 | - | - | - |
選択肢
- アT1
- イT2
- ウT3
- エT4
正解と解説
正解:イ T2
各資源のロック状態を時系列で追うと、AはT1とT4が共有ロック、BはT2とT3が共有ロック、CはT1とT2が共有ロックを保持する。その後、T4のupdate(B)はT2とT3を待ち、T2のupdate(C)はT1を待ち、T3のupdate(A)はT1とT4を待つ。待ちの矢印が出ておらず二つ流入する頂点がT1(図のd)、そこへ向かう矢印を1本だけ出しつつ1本受ける頂点がT2であり、aはT2となる。
選択肢ごとの解説
- アT1は他のトランザクションを待っておらず、矢印が出ていない頂点(図のd)に当たる。
- イ正しい。T2はC の専有ロックでT1だけを待ち、かつT4から待たれる位置にあり、aに当てはまる。
- ウT3はT1とT4の二つを待つため、矢印を2本出す頂点に当たり、aではない。
- エT4はT2とT3の二つを待つため、こちらも矢印を2本出す頂点であり、aではない。
同じ分野の他の問題
- トランザクションの隔離性水準を高めたとき,不整合なデータを読み込むトランザクション数と,単位時間に処理できるトランザクシ…2025年度 春期 午前II 問24
- DBMS において、デッドロックを検出するために使われるデータ構造はどれか。2024年度 春期 午前II 問24
- DBMSがトランザクションのコミット処理を完了するタイミングはどれか。2023年度 春期 午前II 問24
- システム障害発生時には、データベースの整合性を保ち、かつ、最新のデータベース状態に復旧する必要がある。このために、DBM…2016年度 秋期 午前II 問21
- コードの値からデータの対象物が連想できるコード体系はどれか。2025年度 春期 午前II 問23
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。