ファントムリード 【phantom read】 幻像読み取り / 仮読み取り

概要

ファントムリード(phantom read)とは、データベースシステムのトランザクション処理において、あるトランザクションが読み出しを複数回行うと、その間に他のトランザクションが追加したデータが増えてしまうこと。

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

ファントムリードを防止するには、トランザクション分離レベルとして最も高い “SERIALIZABLE”(直列化可能)を指定する必要があるが、その分だけ性能は低くなるため、処理の特性やコストなどとの兼ね合いで完全に防ぐ必要があるか判断することになる。

同じ並列トランザクションに起因する問題として、あるトランザクションが同じレコードを何度も繰り返し読み出す場合に途中で他のトランザクションが内容を更新してしまう「ノンリピータブルリード」(non-repeatable read)あるいは「ファジーリード」(fuzzy read)、あるトランザクションが処理の最中にストレージに書き込んだ未確定なデータを、他のトランザクションが読み込んで使用してしまう「ダーティリード」(dirty read)がある。

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