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

令和6年度秋期 データベーススペシャリスト 午前Ⅱ 問12

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

問題

二つのトランザクションが,同じデータに対して,更新,参照を行うときに発生し得るダーティリードの事象を記述したものはどれか。

選択肢

  1. ア
    トランザクションAがある検索条件を満たす,ある表の行の集合を参照した。次に,トランザクションBがトランザクションAと同じ検索条件を満たす新しい行を挿入しコミットした。その後,トランザクションAが同じ検索条件で再度参照すると,以前には存在しなかった行が出現した。
  2. イ
    トランザクションAがある表の行の列を参照した。次に,トランザクションBがその列の値を更新しコミットした。その後,トランザクションAがその列を再度参照すると,以前の値と異なった。
  3. ウ
    二つのトランザクションがそれぞれ2相ロックをかけ,デッドロックを起こした。
  4. エ
    まだコミットしていないトランザクションAの更新後データをトランザクションBが参照した。その後,更新後データはロールバックされた。
解き方のヒントを見る

トランザクション境界の見極め方

処理のまとまりと整合性を考えるときは、操作の順序だけでなく、どの時点を一つの単位として扱うか、途中で問題が起きた場合に状態をどう捉えるかを整理し、用語の定義にも注意しましょう。

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

各操作を個別に見るのではなく、開始から完了までのまとまり、途中失敗時の扱い、他の処理から見える状態という観点を並べ、設問の条件と照合して境界を考えましょう。

視点

トランザクションを一連の処理単位として捉え、どこからどこまでが同じまとまりか、その境界が整合性の確認にどう関係するかを整理します。

確認ポイント

  • 一つの処理単位の開始点と終了点を確認する
  • 途中で処理が止まる場合の状態を整理する
  • 他の処理から見える範囲と順序を確認する
正解と解説を見る

正解

エ

解説

ダーティリードは、あるトランザクションがコミット前の更新データを別のトランザクションから参照する現象です。その後に更新がロールバックされる場合、参照した内容は最終的に確定しない。

理由

エは、トランザクションAがまだコミットしていない更新後データを、トランザクションBが参照している。その後に更新後データがロールバックされるため、Bは確定していない値を読んだことになる。これはダーティリードの定義に一致する。

比較

アは同じ検索条件で新しい行が見える現象で、ファントムリードに該当する。イはコミット済み更新後の値を再参照して異なる値になる現象で、一般にノンリピータブルリードに関係する。ウはロック取得順序によるデッドロックであり、ダーティリードではありません。

選択肢ア

これは不正解だよ。同じ検索条件で再参照した際に、後から挿入されコミットされた行が現れる事象である。これは検索結果の集合が変化する現象であり、未コミットの更新データを参照するダーティリードとは異なる。

選択肢イ

これは不正解だよ。トランザクションBが列の値を更新してコミットした後、トランザクションAが再参照して以前と異なる値を見る事象である。更新は既にコミットされており、未確定データの参照ではない。

選択肢ウ

これは不正解だよ。二つのトランザクションが2相ロックを使い、互いに必要な資源を待つことでデッドロックが発生している。これはトランザクション間の待機状態に関する事象で、データの未確定読取りではない。

選択肢エ(正解)

これは正解だよ。トランザクションAがまだコミットしていない更新後データを、トランザクションBが参照している。その後に更新後データがロールバックされるため、Bは確定前のデータを読んでいる。

学習のポイント

ダーティリードでは、参照時点のコミット状態と、その後のロールバックの有無を時系列で確認する。

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

関連する過去問一覧

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