平成25年度 春期 午前Ⅱ 問10
トランザクション処理
待ちグラフに関する問題
t₁〜t₁₀ の時刻でスケジュールされたトランザクション T₁〜T₄ がある。時刻 t₁₀ で T₁ が commit を発行する直前の,トランザクションの待ちグラフを作成した。a に当てはまるトランザクションはどれか。ここで,select (X) は共有ロックをかけて資源 X を参照することを表し,update (X) は専有ロックをかけて資源 X を更新することを表す。これらのロックは,commit されるまでアンロックされないものとする。また,トランザクションの待ちグラフの矢印は,Tᵢ→Tⱼ としたとき,Tⱼ がロックしている資源のアンロックを,Tᵢ が待つことを表す。
〔トランザクションのスケジュール〕
| 時刻 | T₁ | T₂ | T₃ | T₄ |
|---|---|---|---|---|
| t₁ | select (A) | − | − | − |
| t₂ | − | select (B) | − | − |
| t₃ | − | − | select (A) | − |
| t₄ | − | − | − | select (B) |
| t₅ | − | − | − | update (B) |
| t₆ | select (C) | − | − | − |
| t₇ | − | select (C) | − | − |
| t₈ | − | update (C) | − | − |
| t₉ | − | − | update (A) | − |
| t₁₀ | commit | − | − | − |
〔トランザクションの待ちグラフ〕:
b → a a → d c → d
- アT₁
- イT₂
- ウT₃
- エT₄
答えと解説を見る
✓ これが正解イT₂
解説
a は、T₄ に待たれ、自らは T₁ を待っている T₂ です。
待ちグラフは、ロックが衝突した操作ごとに、待つ側から持っている側へ矢印を引いて作ります。スケジュールを順に追います。t₅ で T₄ が B を更新しようとしますが、T₂ が t₂ で B に共有ロックをかけているので T₄→T₂ です。t₈ で T₂ が C を更新しようとしますが、T₁ が t₆ で C に共有ロックをかけているので T₂→T₁ です。t₉ で T₃ が A を更新しようとしますが、T₁ が t₁ で A に共有ロックをかけているので T₃→T₁ です。矢印を二つ受ける d が T₁、d へ向かい、かつ b から矢印を受ける a が T₂、b が T₄、c が T₃ になります。共有ロックどうしは衝突しないので、更新の操作だけを拾えば矢印は漏れません。
ほかの選択肢はなぜ違うのか
- アT₁:T₁ は A と C に共有ロックをかけたまま何も待っておらず、T₂ と T₃ の両方から待たれる側です。矢印を二つ受けているノードは d なので、T₁ が当てはまるのは d であり a ではありません。
- ウT₃:T₃ は A を更新しようとして T₁ を待ちますが、T₃ を待っているトランザクションはありません。矢印を出すだけで受けないノードのうち d へ向かうのは c なので、T₃ は c にあたります。
- エT₄:T₄ は B を更新しようとして T₂ を待つ側で、T₄ を待つトランザクションはありません。矢印を出すだけで a へ向かっている b が T₄ にあたり、a そのものではありません。
この問題の用語
- スケジュール作業の順序と日程を決めた計画のことをいいます。作業の前後関係から日程を組み立てるには、PERTが向いています。
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
出典:平成25年度 春期 データベーススペシャリスト試験 午前Ⅱ 問10
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問18:ブロックチェーンに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問17:デッドロックに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問16(スケジュール)
- 令和5年度 秋期 午前Ⅱ 問17(スケジュール)
- 令和2年度 10月 午前Ⅱ 問11:直列化可能性に関する問題(スケジュール)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)