Was gleichzeitig passieren darf
Einführung · 5 Abschnitte · ~15 Min Lesezeit · Stand
Betriebsfrage
Eine Anwendung funktioniert im Test und erzeugt in Produktion sporadisch falsche Werte. Der Unterschied ist selten der Code — es ist die Gleichzeitigkeit. Isolationsstufen legen fest, welche Anomalien die Datenbank zulässt, und dieses Zugeständnis ist bewusst zu treffen.
Mentales Modell
- Lesen
- Rechnen
- Schreiben
- Bestätigen
Der klassische Fehler ist die Lese-Rechne-Schreibe-Schleife: Ein Wert wird gelesen, außerhalb der Datenbank verändert und zurückgeschrieben. Läuft das zweimal gleichzeitig, geht eine Änderung verloren — ohne dass irgendeine Fehlermeldung entsteht.
Anomalien
| Schmutziges Lesen | Eine noch nicht bestätigte Änderung wird sichtbar. Die meisten Systeme lassen das standardmäßig nicht zu. |
|---|---|
| Nicht wiederholbares Lesen | Derselbe Datensatz liefert innerhalb einer Transaktion zweimal unterschiedliche Werte. |
| Phantom | Eine wiederholte Bereichsabfrage liefert zusätzliche Zeilen, weil nebenher eingefügt wurde. |
| Verlorene Aktualisierung | Zwei Transaktionen überschreiben sich gegenseitig; das Ergebnis wirkt plausibel und ist falsch. |
Die Kosten hoher Stufen
- Strengere Isolation erzeugt mehr Konflikte — und damit Transaktionen, die abgebrochen und wiederholt werden müssen.
- Die Anwendung muss diese Wiederholung beherrschen; sonst wird aus einem Konsistenzgewinn ein Fehlerbild.
- Lange offene Transaktionen halten Ressourcen und blockieren Aufräumvorgänge — unabhängig von der gewählten Stufe.