DBデータベーススペシャリスト試験 午前Ⅱ

平成31年度春期 データベーススペシャリスト 午前Ⅱ 問10

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

t₁〜t₁₀の時刻でスケジュールされたトランザクションT₁〜T₄がある。時刻t₁₀でT₁がcommitを発行する直前の,トランザクションの待ちグラフを作成した。aに当てはまるトランザクションはどれか。ここで,select(X)は共有ロックを掛けて資源Xを参照することを表し,update(X)は専有ロックを掛けて資源Xを更新することを表す。これらのロックは,commitされるまでアンロックされないものとする。また,トランザクションの待ちグラフの矢印は,Tᵢ→Tⱼとしたとき,Tⱼがロックしている資源のアンロックを,Tᵢが待つことを表す。
時刻t1〜t10におけるトランザクションT1〜T4のselect・update・commitのスケジュール表と,bからa,aからd,cからdへ矢印が向く待ちグラフ。
時刻t1〜t10におけるトランザクションT1〜T4のselect・update・commitのスケジュール表と,bからa,aからd,cからdへ矢印が向く待ちグラフ。

選択肢

  1. ア
    T₁
  2. イ
    T₂
  3. ウ
    T₃
  4. エ
    T₄
解き方のヒントを見る

同時実行の競合を整理する視点

同時実行の問題では、複数の処理が共有データへ触れる順序と、各処理が保持する資源に注目し、状態の変化を時系列で整理して、処理間の関係を比較しながら確認します。

この問題で問われていること

確認する観点を、処理ごとの操作順序とロックの取得・解放が重なる箇所に一つだけ絞り、待ちや競合が生じる可能性を、時系列のつながりとして丁寧に追い、順番を崩さず確認します。

視点

各トランザクションを独立した列に分け、読み取り・更新・確定などの出来事を時系列に並べます。そのうえで、同じ対象に関わる区間がどこで重なるかを確認します。

確認ポイント

  • 処理ごとの操作を時系列に並べ、共有対象へ触れる順番を確認する
  • 同じ対象を扱う処理どうしで、資源を保持する区間の重なりを確認する
  • 待機や中断が起こり得る箇所を、各処理の進行順に沿って確認する
正解と解説を見る

正解

イ

解説

各トランザクションのロック取得を時系列に追うと、T2はCの専有ロック取得を、T1が保持する共有ロックのため待ちます。また、T3はA、T4はBをめぐってそれぞれ待ち状態になります。図の中で後続の待ち関係を持つ位置に入るのはT2です。

理由

T1はAとCを共有ロックで参照したまま、t10直前までコミットしていません。T2のCに対する共有ロック取得は両立しますが、その後の専有ロック取得はT1の共有ロックと競合するため、T2からT1への待ちが発生します。

比較

T3のAに対する専有ロック要求もT1の共有ロックを待ち、T4のBに対する専有ロック要求はT2の共有ロックを待ちます。したがって図はT2を中継する関係を含み、aに対応するのはT2です。

選択肢ア

これは不正解だよ。T1はAとCの共有ロックを保持しており、T3のAに対する専有ロック要求やT2のCに対する専有ロック要求から待たれる側です。図で、他のトランザクションから待たれる位置をT1に対応付けるため、aではありません。

選択肢イ(正解)

これは正解だよ。T2はBとCを共有ロックで参照した後、Cを専有ロックで更新しようとします。しかしCの共有ロックをT1が保持しているためT2はT1を待ち、さらにT4のB更新もT2を待ちます。この関係が図のaに一致します。

選択肢ウ

これは不正解だよ。T3はAを共有ロックで参照した後、Aを専有ロックで更新しようとします。Aの共有ロックをT1が保持しているため、T3はT1を待つ側になります。図ではT1へ向かう待ち関係を持つ位置に対応し、aではありません。

選択肢エ

これは不正解だよ。T4はBを共有ロックで参照した後、Bを専有ロックで更新しようとします。Bの共有ロックをT2が保持しているため、T4はT2を待つ側です。図ではT2へ向かう端点側の関係になるため、aには当てはまりません。

学習のポイント

待ちグラフは、ロック競合と矢印の向きを時系列で対応付けて読み取ります。

出典:独立行政法人 情報処理推進機構(IPA)平成31年度春期 データベーススペシャリスト試験 午前Ⅱ 問10(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針