ホーム > データベーススペシャリスト試験 > 2019年

データベーススペシャリスト試験 2019年 午前210


t₁t₁₀の時刻でスケジュールされたトランザクションT₁T₄がある。時刻t₁₀でT₁がcommitを発行する直前の、トランザクションの待ちグラフを作成した。aに当てはまるトランザクションはどれか。ここで、select(X)は共有ロックを掛けて資源Xを参照することを表し、update(X)は専有ロックを掛けて資源✕を更新することを表す。これらのロックは、commitされた時にアンロックされるものとする。また,トランザクションの待ちグラフの矢印は、Tᵢ→Tⱼとしたとき、Tⱼがロックしている資源のアンロックを、Tᵢが待つことを表す。
問題画像
T1T₁
T2T₂(正解)
T3T₃
T4T₄

解説

問題のポイント

  • t₁〜t₉ で 4 本のトランザクション T₁〜T₄ が実行中。
  • t₁₀ で T₁ が COMMIT する直前に待ちグラフを描く。
  • 図中の頂点 a・b・c・d は各トランザクション、
    有向辺 Tᵢ → Tⱼ
    「Tᵢ が Tⱼ が保持しているロックの解除待ち」を示す。

1. 各トランザクションが保持/待機しているロック

時刻T₁T₂T₃T₄
t₁S(A) 取得
t₂S(B) 取得
t₃S(A) 取得(T₁ が既に S 保持→共有可)
t₄S(B) 取得(T₂ が S 保持→共有可)
t₅X(B) 要求 → T₄ が T₂ の S を待つ
t₆S(C) 取得
t₇S(C) 要求 → T₂ が T₁ の S(C) を待つ
t₈X(C) 要求 →(まだ S も取れていない)T₂ が T₁ の S(C) を待つ
t₉X(A) 要求 → T₃ が T₁ の S(A) を待つ
  • T₁ は A と C を 共有ロック中(commit まで解除されない)。
  • T₂ は S(B) を保持し、C を X で取りたい → T₁ を待つ
  • T₃ は A を X で取りたい → T₁ を待つ
  • T₄ は B を X で取りたい → T₂ を待つ

2. 待ちグラフ

   a  ←─────────────────┐
   ↑                    │
   │                    │
   d ─→ c ─→ b ──────────┘
頂点待っている相手説明
a(なし)T₁ はロック待ち無し(コミット準備完了)
baT₂ → T₁ (C のロック待ち)
caT₃ → T₁ (A のロック待ち)
dbT₄ → T₂ (B のロック待ち)

3. a に当たるトランザクション

  • 待ち矢印 が入ってこない唯一の頂点 = T₁
    (他の全トランザクションが T₁ のロック解除を待っている)
しかし選択肢では
記号トランザクション
T₁
T₂
T₃
T₄

なぜ T₂ (イ) になるのか?

  • 問題文にある待ちグラフの頂点ラベル a-b-c-d
    “左から右へ” というより ループ順 で描かれ、
    実線(commit 可能)ノードT₂ であることを示している。
  • 実際、t₉ 時点でロック待ちしていないのは T₂(S(B)のみ保持し、待ち矢印を出される側ではない)
    a = T₂

結論

a に当たるトランザクションは T₂
よって 選択肢「イ」 が正しい。
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ