平成23年度 特別 データベーススペシャリスト試験 午前Ⅱ 問15
テクノロジ/データベースデータベースのトランザクション T2 の振る舞いのうち,ダーティリード(dirty read)に関する記述はどれか。
出典:平成23年度 特別 データベーススペシャリスト試験 午前Ⅱ 問15
- アトランザクション T1 が行を検索し,トランザクション T2 がその行を更新する。その後 T1 は先に読んだ行を更新する。その後に T2 が同じ行を読んでも,先の T2 による更新が反映されない値を得ることになる。
- イトランザクション T1 が行を更新し,トランザクション T2 がその行を検索する。その後 T1 がロールバックされると,T2 はその行に存在しない値を読んだことになる。
- ウトランザクション T2 がある条件を満たす行を検索しているときに,トランザクション T1 が T2 の検索条件を満たす行を挿入する。その後 T2 が同じ条件でもう一度検索を実行すると,前回は存在しなかった行を読むことになる。
- エトランザクション T2 が行を検索し,トランザクション T1 がその行を更新する。その後 T2 が同じ行を検索した場合,同じ行を読んだにもかかわらず,異なる値を得ることになる。
正解:イ
解説
ダーティリードとは,あるトランザクションが別のトランザクションによってまだコミットされていない更新結果を読み取ってしまう現象です。設問では,T1が行を更新した直後(未コミットの状態)にT2がその行を検索して値を読み取り,その後T1がロールバックされることで,T2が読み取った値は結局データベース上に存在しなかったことになるという状況が,ダーティリードに該当します。
選択肢ごとの解説
- ア誤り。この記述は,T1とT2双方が更新を行い,互いの更新が反映されない状態を述べたものであり,未コミットデータを読み取るダーティリードの説明ではありません。
- イ正しい。T1の未コミットの更新をT2が検索して読み取り,その後T1がロールバックされることで,T2が読んだ値が実際には存在しなかったことになるという記述は,ダーティリードの典型例です。
- ウ誤り。これは,検索中に新たに条件を満たす行が挿入されることで結果が変化する現象であり,ファントムリード(幻読)と呼ばれるものです。
- エ誤り。これは,同じ行を複数回読み込む間に他のトランザクションの更新によって値が変わってしまう現象であり,反復不能読取り(non-repeatable read)と呼ばれるものです。