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へ矢印を出す)。

| 時刻 | 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 | - | - | - |
選択肢
- アT1
- イT2
- ウT3
- エT4
正解と解説
正解:イ T2
共有ロックのままなら共存できるが、専有ロックを掛けようとすると他者の共有ロックの解放を待つことになる。BへのT4の更新はT2の共有ロックを、CへのT2の更新とAへのT3の更新はいずれもT1の共有ロックを待つ。したがって待ちの向きはT4→T2、T2→T1、T3→T1となり、矢印を1本出しつつ1本受けている位置に入るのはT2である。
選択肢ごとの解説
- アT1は他を待たずに待たれる側なので、矢印を受けるだけの位置(d)にあたる。
- イ正しい。T2はT1を待ちつつT4から待たれており、矢印を出し入れ両方する位置にある。
- ウT3はT1を待つだけで誰からも待たれておらず、別の位置にあたる。
- エT4はT2を待つだけで誰からも待たれていない。
同じ分野の他の問題
- DBMSにおいて、トランザクション間でデッドロックが発生していることを検出するために使用するものはどれか。2016年度 春期 午前II 問13
- トランザクションA〜Gの待ちグラフにおいて、永久待ちの状態になっているトランザクション全てを列挙したものはどれか。ここで…2024年度 秋期 午前II 問13
- 複数のバッチ処理を並行して動かすとき、デッドロックの発生をできるだけ回避したい。バッチ処理の設計ガイドラインのうち、適切…2022年度 秋期 午前II 問13
- RDBMSのロックに関する記述のうち、適切なものはどれか。ここで、X,Yはトランザクションとする。2021年度 秋期 午前II 問14
- DBMSにおいて、デッドロックを検出するために使われるデータ構造はどれか。2018年度 春期 午前II 問16
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。