Grundlagen der Datenbanken

Welche Aussage beschreibt unter den Problemen, die bei gleichzeitig laufenden Transaktionen auftreten, einen Dirty Read richtig?

  1. AEine Transaktion liest eine Änderung, die eine andere Transaktion noch nicht festgeschrieben hat, und da diese anschließend ein Rollback ausführt, verwendet sie einen Wert, der nie existiert hat
  2. BZweimaliges Lesen derselben Zeile innerhalb einer Transaktion ergibt einen anderen Wert, weil eine andere Transaktion die Zeile zwischendurch geändert und festgeschrieben hat
  3. CEine Suche mit derselben Bedingung ergibt beim zweiten Mal eine andere Zeilenzahl, weil eine andere Transaktion zwischendurch eine Zeile eingefügt und festgeschrieben hat
Antwort und Erläuterung anzeigen

Antwort: A. Eine Transaktion liest eine Änderung, die eine andere Transaktion noch nicht festgeschrieben hat, und da diese anschließend ein Rollback ausführt, verwendet sie einen Wert, der nie existiert hat

Ein Dirty Read ist das Problem, nicht festgeschriebene (noch nicht dauerhafte) Daten zu lesen. Führt die Transaktion, die die Änderung vorgenommen hat, später ein Rollback aus, ist der gelesene Wert nie dauerhaft geworden, und jede darauf beruhende Verarbeitung ist falsch. Dass dieselbe Zeile beim zweiten Lesen einen anderen Wert hat, ist ein Non-repeatable Read (nicht wiederholbares Lesen); dass die zu einer Suchbedingung passenden Zeilen mehr oder weniger geworden sind, ist ein Phantom Read. Diese Probleme treten auf, wenn die Isolation der Transaktionen nicht ausreicht, und in SQL wählt man über das Isolationslevel, wie viele davon verhindert werden. Ab dem Isolationslevel READ COMMITTED treten keine Dirty Reads auf.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. 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?
  2. Welche Antwort nennt richtig die Phänomene, die unter dem im SQL-Standard definierten Isolationslevel READ COMMITTED auftreten können?
  3. 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?
  4. Welche Aussage beschreibt das für die Nebenläufigkeitskontrolle von Transaktionen verwendete Zwei-Phasen-Sperrprotokoll (2PL) richtig?
  5. 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?