Sobes.tech
Junior — Middle

Könnten Sie erklären, was im Kontext von Transaktionen und Datenbanken unter Phantom Read verstanden wird?

sobes.tech KI

Antwort von AI

Phantom Read ist eine Situation in Transaktionen, bei der bei wiederholter Ausführung derselben Abfrage innerhalb einer Transaktion neue Zeilen erscheinen, die bei der ersten Lektüre nicht sichtbar waren.

Beispiel:

  1. Transaktion T1 führt die Abfrage SELECT * FROM orders WHERE status = 'new' aus und erhält 5 Einträge.
  2. Während T1 noch läuft, fügt eine andere Transaktion T2 einen neuen Eintrag mit status = 'new' hinzu und bestätigt die Änderungen.
  3. Wenn T1 die gleiche Abfrage wiederholt, sieht sie bereits 6 Einträge — die neue Zeile, die als "Phantom" erscheint.

Phantom Read tritt auf, weil sich der Bereich der Zeilen, die die Abfragebedingung erfüllen, zwischen den beiden Lesevorgängen geändert hat.

Um Phantom Reads zu vermeiden, wird das Isolationsniveau SERIALIZABLE verwendet, das Datenbereiche sperrt und das Erscheinen neuer Zeilen zwischen den Lesevorgängen verhindert. Bei den Niveaus READ COMMITTED oder REPEATABLE READ können Phantom Reads auftreten.