Grundlagen der Datenbanken
Transaktion T1 führte SELECT COUNT(*) FROM Bestellung WHERE Betrag >= 1000 aus und erhielt 8. Unmittelbar danach fügte T2 eine Bestellzeile mit einem Betrag von 2000 per INSERT ein und schrieb sie fest. Als T1 dieselbe SELECT-Anweisung erneut ausführte, erhielt sie 9. Um welches Phänomen handelt es sich?
- ANon-repeatable Read
- BDirty Read
- CPhantom Read
Antwort und Erläuterung anzeigen
Antwort: C. Phantom Read
Wird innerhalb einer Transaktion eine Suche mit derselben Bedingung wiederholt und ändert sich die Menge der Ergebniszeilen, weil eine andere Transaktion zwischendurch passende Zeilen eingefügt (oder gelöscht) und festgeschrieben hat, spricht man von einem Phantom Read (Phantom). Der Name rührt daher, dass die neu auftauchenden Zeilen wie Gespenster (Phantome) wirken. Ein Non-repeatable Read liegt vor, wenn eine bereits gelesene Zeile beim erneuten Lesen einen anderen Wert hat (oder verschwunden ist), weil eine andere Transaktion sie per UPDATE oder DELETE geändert und festgeschrieben hat. Sperren auf vorhandenen Zeilen können das Einfügen noch nicht existierender Zeilen nicht verhindern; um Phantome zu verhindern, braucht es daher Mechanismen wie das Sperren des von der Suchbedingung erfassten Bereichs. Nach dem SQL-Standard treten beim Isolationslevel SERIALIZABLE keine Phantome auf. T2 hat festgeschrieben, es handelt sich also nicht um einen Dirty Read.