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

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

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


答え エ


解説
ダーティリードはトランザクションの処理と中のデータを、他のトランザクションが参照してしまう現象なので、解答は
まだコミットしていないトランザクションAの更新後データをトランザクションBが参照した。
その後、更新後データはロールバックされた。

(エ)になります。


キーワード
・ダーティリード

キーワードの解説
  • ダーティリード(dirty read)
    トランザクション処理において、あるトランザクションがデータの更新をしている最中に、他のトランザクションからデータを読み出すことができてしまう現象のことです。
    これはトランザクション処理において、更新されるデータは更新が完了しなくてはデータを見ることができない、トランザクション処理における機能の条件である「ACID特性」のうちの一貫性(Consistency)が実現できていないことになります。

もっと、「ダーティリード」について調べてみよう。

戻る 一覧へ 次へ