平成27年春期試験問題 午前Ⅱ 問16

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

  • トランザクションAがある検索条件を満たすある表の行の集合を参照した。次に,トランザクションBがトランザクションAと同じ検索条件を満たす新しい行を挿入しコミットした。その後,トランザクションAが同じ検索条件で再度参照すると,以前には存在しなかった行が出現した。
  • トランザクションAがある表の行の列を参照した。次に,トランザクションBがその列の値を更新しコミットした。その後,トランザクションAがその列を再度参照すると,以前の値と異なった。
  • 二つのトランザクションがそれぞれ2相ロックをかけ,デッドロックを起こした。
  • まだコミットしていないトランザクションAの更新後データをトランザクションBが参照した。その後,更新後データはロールバックされた。
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:トランザクション処理
解説
ダーティリード(dirty read,汚読)とは、トランザクションの直列化可能性が保証されない状況において、他のトランザクションが更新したコミット前の値(ダーティデータ)を読み、その後更新処理を行ったトランザクションがロールバックされると、存在しない値を読み込んだことになってしまう異常をいいます。
  1. T1がデータを更新する
  2. T2が更新されたデータを読み込む
  3. T1がロールバックされる
  4. T2は存在しない値を読み込んだことになる
また、トランザクションの直列化可能性が保証されないときにはダーティリードの他にもノンリピータブルリード、ファントムリードという異常が発生する可能性があります。
ノンリピータブルリード(再現不可能な読み)
同じトランザクションで複数回の読込みを行ったとき、読込む度に値が変わってしまう異常。2回の読込みの間に、別のトランザクションがそのデータを更新したことが原因で発生する。
ファントムリード
同じトランザクションで複数回の読込みを行ったとき、前回は存在しなかった行が現れる異常。2回の読込みの間に、別のトランザクションがテーブルに行を挿入したことが原因で発生する。
  • ファントムリードの説明です。
  • ノンリピータブルリードの説明です。
  • ダーティリードには関係がありません。
  • 正しい。ダーティリードの説明です。トランザクションBはデータベース上に存在しない値を読んだことになります。

Pagetop