ファントムリード
あるトランザクションが同じ範囲クエリを二度実行したところ、別のトランザクションが条件に合う行をINSERTしたせいで、返る行数が変わってしまう現象。
同じ行が更新される「ノンリピータブルリード」と違い、増えるのは新しい行である。スナップショット分離とSerializableでは防げる。SQL標準では、Repeatable ReadとSerializableを分ける異常現象としてファントムを定義している。
実装は製品ごとに異なる。PostgreSQLの「Repeatable Read」は実際にはスナップショット分離で、読み取りのファントムは防ぐが、write skewは防げない。MySQLのInnoDBはギャップロックを使い、Repeatable Readでもファントムを防ぐ。