データベーススペシャリスト平成27年春期 午前Ⅱ 問16

問16

二つのトランザクションが,同じデータに対して,更新,参照を行うときに発生し得るダーティリードの事象を記述したものはどれか。
  • トランザクションAがある検索条件を満たすある表の行の集合を参照した。次に,トランザクションBがトランザクションAと同じ検索条件を満たす新しい行を挿入しコミットした。その後,トランザクションAが同じ検索条件で再度参照すると,以前には存在しなかった行が出現した。
  • トランザクションAがある表の行の列を参照した。次に,トランザクションBがその列の値を更新しコミットした。その後,トランザクションAがその列を再度参照すると,以前の値と異なった。
  • 二つのトランザクションがそれぞれ2相ロックをかけ,デッドロックを起こした。
  • まだコミットしていないトランザクションAの更新後データをトランザクションBが参照した。その後,更新後データはロールバックされた。

分類

テクノロジ系 » データベース » トランザクション処理

正解

解説

ダーティリード(dirty read,汚読)とは、トランザクションの直列化可能性が保証されない状況において、他のトランザクションが更新したコミット前の値(ダーティデータ)を読み、その後更新処理を行ったトランザクションがロールバックされると、存在しない値を読み込んだことになってしまう異常をいいます。
  1. T1がデータを更新する
  2. T2が更新されたデータを読み込む
  3. T1がロールバックされる
  4. T2は存在しない値を読み込んだことになる
また、トランザクションの直列化可能性が保証されないときにはダーティリードの他にもノンリピータブルリード、ファントムリードという異常が発生する可能性があります。
ノンリピータブルリード(再現不可能な読み)
同じトランザクションで複数回の読込みを行ったとき、読込む度に値が変わってしまう異常。2回の読込みの間に、別のトランザクションがそのデータを更新したことが原因で発生する。
ファントムリード
同じトランザクションで複数回の読込みを行ったとき、前回は存在しなかった行が現れる異常。2回の読込みの間に、別のトランザクションがテーブルに行を挿入したことが原因で発生する。
  • ファントムリードの説明です。
  • ノンリピータブルリードの説明です。
  • ダーティリードには関係がありません。
  • 正しい。ダーティリードの説明です。トランザクションBはデータベース上に存在しない値を読んだことになります。
© 2016-2024 データベーススペシャリストドットコム All Rights Reserved.

Pagetop