Aller au contenu
uencoder

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

Outils associés

References