Grundlagen der Datenbanken
Welche Aussage beschreibt unter den Problemen, die bei gleichzeitig laufenden Transaktionen auftreten, einen Dirty Read richtig?
- 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
- BZweimaliges Lesen derselben Zeile innerhalb einer Transaktion ergibt einen anderen Wert, weil eine andere Transaktion die Zeile zwischendurch geändert und festgeschrieben hat
- 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.