ダーティリードとは?
ダーティリードとは、他のトランザクションがまだコミットしていない更新値を読んでしまう現象。その後ロールバックされると、存在しなかった値に基づいて処理したことになる。
データベーススペシャリスト試験の過去問では3回出題されています(2019年度〜2024年度)。
ダーティリード
ダーティリードの意味
他のトランザクションがまだコミットしていない更新値を読んでしまう現象。その後ロールバックされると、存在しなかった値に基づいて処理したことになる。
ダーティリードの具体例
未確定の入金額を読んで残高を判定してしまう。
ダーティリードは試験でどう引っ掛けられる?
READ UNCOMMITTEDでのみ発生し、READ COMMITTED以上では起きない。
ダーティリードと関連する用語
ダーティリードが出た過去問
トランザクションの隔離性水準のうち、次の(1), (2)に該当するSQLの指定はどれか。 (1) 対象の表のダーティリードは回避できる。 (2) 一つのトランザ…
正解:READ COMMITTED
要点:READ COMMITTEDはダーティリードのみ防ぎ再読込みは保証しない
READ COMMITTEDはコミット済みのデータしか読まないためダーティリードは起こらないが、読み終えた行を他のトランザクションが更新・コミットすると、同じ行を読み直したときに値が変わり得る。この現象がアンリピータブルリードであり、防ぐにはREPEATABLE READ以上が必要になる。
出典:令和1年度 春期 データベーススペシャリスト試験 am2 問9(IPA)次の(1),(2)に該当するトランザクションの隔離性水準はどれか。 (1)対象の表のダーティリードは回避できる。 (2)一つのトランザクション中で、対象の表のあ…
正解:READ COMMITTED
要点:READ COMMITTEDはダーティリードのみ防ぐ隔離性水準
ダーティリード(未コミットの値の読取り)は防げるが、同じ行を読み直すと他トランザクションのコミット済み更新が見えてしまい値が変わり得る、という状態は反復不能読取りが起きる水準である。これに当たるのがREAD COMMITTEDである。
出典:令和3年度 秋期 データベーススペシャリスト試験 am2 問7(IPA)二つのトランザクションが、同じデータに対して、更新、参照を行うときに発生し得るダーティリードの事象を記述したものはどれか。
正解:まだコミットしていないトランザクションAの更新後データをトランザクションBが参照した。その後、更新後データはロールバックされた。
要点:ダーティリードは未コミット値を読むこと
ダーティリードは、まだコミットされていない他トランザクションの更新途中の値を読んでしまう現象である。その後に元のトランザクションがロールバックすると、読み取った側は現実には存在しなかった値を前提に処理を進めたことになる。隔離性水準をREAD COMMITTED以上にすれば防止できる。
出典:令和6年度 秋期 データベーススペシャリスト試験 am2 問12(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。