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