データベーススペシャリスト 平成26年春期 午前U 問14

午前U 問14

データベースのトランザクションT2の振る舞いのうち,ダーティリード(dirty read)に関する記述はどれか。
  • トランザクションT1が行を検索し,トランザクションT2がその行を更新する。その後T1は先に読んだ行を更新する。その後にT2が同じ行を読んでも,先のT2による更新が反映されない値を得ることになる。
  • トランザクションT1が行を更新し,トランザクションT2がその行を検索する。その後T1がロールバックされると,T2はその行に存在しない値を読んだことになる。
  • トランザクションT2がある条件を満たす行を検索しているときに,トランザクションT1がT2の検索条件を満たす行を挿入する。その後T2が同じ条件でもう一度検索を実行すると,前回は存在しなかった行を読むことになる。
  • トランザクションT2が行を検索し,トランザクションT1がその行を更新する。その後T2が同じ行を検索した場合,同じ行を読んだにもかかわらず,異なる値を得ることになる。
  • [この問題の出題歴]
  • データベース H23特別 問15

分類

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

正解

解説

ダーティリード(dirty read)とは、トランザクションの直列化可能性が保証されない状況において、他のトランザクションが更新したコミット前の値(ダーティデータ)を読み、その後更新処理を行ったトランザクションがロールバックされると、存在しない値を読み込んだことになってしまう異常をいいます。
  1. T1がデータを更新する
  2. T2が更新されたデータを読み込む
  3. T1がロールバックされる
  4. T2は存在しない値を読み込んだことになる
したがって正しい記述は「イ」です。

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

Pagetop