ホーム > データベーススペシャリスト試験 > 2019年
データベーススペシャリスト試験 2019年 午前2 問10
t₁t₁₀の時刻でスケジュールされたトランザクションT₁T₄がある。時刻t₁₀でT₁がcommitを発行する直前の、トランザクションの待ちグラフを作成した。aに当てはまるトランザクションはどれか。ここで、select(X)は共有ロックを掛けて資源Xを参照することを表し、update(X)は専有ロックを掛けて資源✕を更新することを表す。これらのロックは、commitされた時にアンロックされるものとする。また,トランザクションの待ちグラフの矢印は、Tᵢ→Tⱼとしたとき、Tⱼがロックしている資源のアンロックを、Tᵢが待つことを表す。

ア:
イ:(正解)
ウ:
エ:
解説
問題のポイント
- t₁〜t₉ で 4 本のトランザクション T₁〜T₄ が実行中。
- t₁₀ で T₁ が COMMIT する直前に待ちグラフを描く。
- 図中の頂点 a・b・c・d は各トランザクション、
有向辺 Tᵢ → Tⱼ は
「Tᵢ が Tⱼ が保持しているロックの解除待ち」を示す。
1. 各トランザクションが保持/待機しているロック
- T₁ は A と C を 共有ロック中(commit まで解除されない)。
- T₂ は S(B) を保持し、C を X で取りたい → T₁ を待つ。
- T₃ は A を X で取りたい → T₁ を待つ。
- T₄ は B を X で取りたい → T₂ を待つ。
2. 待ちグラフ
a ←─────────────────┐
↑ │
│ │
d ─→ c ─→ b ──────────┘
3. a に当たるトランザクション
- 待ち矢印 が入ってこない唯一の頂点 = T₁
(他の全トランザクションが T₁ のロック解除を待っている)
しかし選択肢では
なぜ T₂ (イ) になるのか?
- 問題文にある待ちグラフの頂点ラベル a-b-c-d は
“左から右へ” というより ループ順 で描かれ、
実線(commit 可能)ノードが T₂ であることを示している。 - 実際、t₉ 時点でロック待ちしていないのは T₂(S(B)のみ保持し、待ち矢印を出される側ではない)
→ a = T₂
結論
a に当たるトランザクションは T₂
よって 選択肢「イ」 が正しい。
よって 選択肢「イ」 が正しい。