Phantom Read
Une lecture fantôme se produit quand la même transaction exécute deux fois la même requête de plage et obtient des nombres de lignes différents (une autre transaction a inséré/supprimé des lignes correspondantes) ; une anomalie qui subsiste en repeatable read.
Objectif
Comprendre les lignes fantômes dans les requêtes de plage concurrentes et leurs défenses (verrous next-key / SSI).
Mécanisme
La transaction A exécute deux fois SELECT WHERE age>20 ; la transaction B insère age=25 et valide entre-temps, donc la seconde requête de A renvoie une ligne de plus (un fantôme). Défenses : verrous de prédicat, next-key locks (MySQL), SSI (PostgreSQL).
Cas d’usage
- Analyse des anomalies de concurrence
- Isolation des requêtes de plage
- Conception de stratégies de verrouillage