IT用語集 › プログラミング › ファントムリード

ファントムリード

プログラミング Svenska → 更新: 2026-10-22

あるトランザクションが同じ範囲クエリを二度実行したところ、別のトランザクションが条件に合う行をINSERTしたせいで、返る行数が変わってしまう現象。

同じ行が更新される「ノンリピータブルリード」と違い、増えるのは新しい行である。スナップショット分離とSerializableでは防げる。SQL標準では、Repeatable ReadとSerializableを分ける異常現象としてファントムを定義している。

実装は製品ごとに異なる。PostgreSQLの「Repeatable Read」は実際にはスナップショット分離で、読み取りのファントムは防ぐが、write skewは防げない。MySQLのInnoDBはギャップロックを使い、Repeatable Readでもファントムを防ぐ。

← 用語集に戻る