平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問16
テクノロジ/データベース二つのトランザクションが,同じデータに対して,更新,参照を行うときに発生し得るダーティリードの事象を記述したものはどれか。
出典:平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問16
- アトランザクションAがある検索条件を満たすある表の行の集合を参照した。次に,トランザクションBがトランザクションAと同じ検索条件を満たす新しい行を挿入しコミットした。その後,トランザクションAが同じ検索条件で再度参照すると,以前には存在しなかった行が出現した。
- イトランザクションAがある表の行の列を参照した。次に,トランザクションBがその列の値を更新しコミットした。その後,トランザクションAがその列を再度参照すると,以前の値と異なった。
- ウ二つのトランザクションがそれぞれ2相ロックをかけ,デッドロックを起こした。
- エまだコミットしていないトランザクションAの更新後データをトランザクションBが参照した。その後,更新後データはロールバックされた。
正解:エ
解説
ダーティリードとは,あるトランザクションがまだコミットしていない(確定していない)更新後のデータを,別のトランザクションが読み取ってしまう事象である。読み取られたデータのもとになった更新が,その後ロールバックされて取り消されると,参照した側のトランザクションは実際には存在しなかったデータを読んだことになってしまう。
選択肢ごとの解説
- ア誤り。これは,一度の検索条件による参照の間に,他のトランザクションが挿入した行が新たに出現する事象であり,ファントムリード(幻読)と呼ばれる事象の説明である。
- イ誤り。これは,同じ行を2回参照する間に,他のトランザクションのコミット済みの更新によって値が変わってしまう事象であり,反復不能読取り(非再現読取り)と呼ばれる事象の説明である。
- ウ誤り。これは,二つのトランザクションが互いに相手の保持するロックの解放を待ち合ってしまう事象であり,デッドロックの説明である。
- エ正しい。まだコミットされていない(確定していない)更新後のデータを他のトランザクションが参照し,その後その更新がロールバックされて取り消されるという事象は,ダーティリードそのものの説明である。