ファントムリードとは?
ファントムリードは、あるトランザクションが同じ範囲クエリを2回実行し、2回目の実行で別のトランザクションがその間に commit した余分な行が返される異常です。元の行は変更されませんが、結果セットが増えています。serializable 分離レベルのみがファントムリードを完全に防ぎます。
なぜ重要か
ファントムリードは、カウントしてから行動するような、トランザクション内でクエリ結果が安定していると仮定するロジックを壊します。存在を知っておくことで、serializable 分離が正当な場面がわかります。
関連ガイド
What Is a Dirty Read?A dirty read happens when a transaction reads data another transaction has changed but not yet committed, ris…
What Is a Transaction Isolation Level?An isolation level sets how much one transaction can see of others in progress, trading consistency guarantee…
What Is Pessimistic Locking?Pessimistic locking takes a lock on data as soon as it is read, blocking other transactions from changing it…