ダーティリード 【dirty read】 未コミット読み取り / 非コミット読み取り

概要

ダーティリード(dirty read)とは、データベースシステムのトランザクション処理において、あるトランザクションが処理の最中にストレージに書き込んだ未確定なデータを、他のトランザクションが読み込んで使用してしまうこと。

一つのデータベースで複数のトランザクションを並列に実行する際に起きる問題で、処理途上で書き込んだデータはトランザクションが完了(コミット)したり取り消され(ロールバック)たりすると別のデータに書き換わることがあるため、別のトランザクションに誤ったデータを提供してしまうことになる。

ダーティリードを防止するにはトランザクション分離レベル “READ COMMITTED” が必要で、トランザクションの処理中によって変更されたデータはそのトランザクションが終了するまで他のトランザクションから読み取れないようロックするなどの対策が要求される。

同じ並列トランザクションに起因する問題として、あるトランザクションが同じレコードを何度も繰り返し読み出す場合に途中で他のトランザクションが内容を更新してしまう「ノンリピータブルリード」(non-repeatable read)あるいは「ファジーリード」(fuzzy read)、同じく繰り返し読み出す際に途中で他のトランザクションによって対象レコードが増えてしまう「ファントムリード」(phantom read)がある。

(2020.7.2更新)
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。