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?

  1. ANon-repeatable Read
  2. BDirty Read
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. Welche Antwort nennt richtig die Phänomene, die unter dem im SQL-Standard definierten Isolationslevel READ COMMITTED auftreten können?
  2. Transaktion T1 hält eine gemeinsame Sperre (Shared Lock) auf einer Zeile und liest sie. T2 fordert eine gemeinsame Sperre und T3 eine exklusive Sperre (Exclusive Lock) auf dieselbe Zeile an. Was gilt für den Zeitraum, bis T1 ihre Sperre freigibt?
  3. Welche Aussage beschreibt das für die Nebenläufigkeitskontrolle von Transaktionen verwendete Zwei-Phasen-Sperrprotokoll (2PL) richtig?
  4. Transaktion T1 setzte eine exklusive Sperre auf Zeile A und forderte dann eine Sperre auf Zeile B an, während T2 eine exklusive Sperre auf Zeile B setzte und dann eine Sperre auf Zeile A anforderte, sodass keine von beiden weiterkommt. Was tut ein DBMS üblicherweise, wenn es diese Situation erkennt?
  5. Viele DBMS zeichnen bei einer Datenänderung die Änderung in einem Protokoll (Journal, Log) auf und schreiben dieses Protokoll vor der eigentlichen Datenbank auf nichtflüchtigen Speicher (WAL: Write-Ahead Logging). Was ist der Hauptgrund für dieses Vorgehen?