ノンリピータブルリード 【non-repeatable read】 ファジーリード / fuzzy read / 反復不能読み取り

概要

ノンリピータブルリード(non-repeatable read)とは、データベースシステムのトランザクション処理において、あるトランザクションが同じレコードを何度も繰り返し読み出す場合に途中で他のトランザクションが内容を更新してしまうこと。

一つのデータベースで複数のトランザクションを並列に実行する際に起きる問題で、あるトランザクションが同じテーブルから何度も読み込みを実施するような場合に、並行して実行されている別のトランザクションにより内容が更新され、同一トランザクション中なのに同じレコードデータが異なってしまう。

ノンリピータブルリードを防止するには、トランザクション分離レベルとして2番目に高い “REPEATABLE READ” を指定する必要があるが、その分だけ性能は低くなる。処理の特性やコストなどとの兼ね合いで完全に防ぐ必要があるか判断することになる。

同じ並列トランザクションに起因する問題として、あるトランザクションが同じテーブルから何度も繰り返し読み出す場合に途中で他のトランザクションレコードの追加や削除をってしまう「ファントムリード」(phantom read)、あるトランザクションが処理の最中にストレージに書き込んだ未確定なデータを、他のトランザクションが読み込んで使用してしまう「ダーティリード」(dirty read)がある。

(2022.11.25更新)
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる