Phantom Read
Ein Phantom Read liegt vor, wenn dieselbe Transaktion dieselbe Bereichsabfrage zweimal ausführt und unterschiedliche Zeilenzahlen erhält (eine andere Transaktion hat passende Zeilen eingefügt/gelöscht); eine Anomalie, die unter Repeatable Read bestehen bleibt.
Zweck
Phantom-Zeilen bei gleichzeitigen Bereichsabfragen und ihre Abwehr verstehen (Next-Key-Locks / SSI).
Mechanismus
Transaktion A führt zweimal SELECT WHERE age>20 aus; Transaktion B fügt age=25 ein und committet dazwischen, sodass As zweite Abfrage eine Zeile mehr liefert (ein Phantom). Abwehr: Prädikatssperren, Next-Key-Locks (MySQL), SSI (PostgreSQL).
Anwendungsfälle
- Analyse von Nebenläufigkeitsanomalien
- Isolation von Bereichsabfragen
- Design von Sperrstrategien