physar / Datenbankadministration für Sysadmins / Transaktionen und Isolationsstufen

Transaktionen und Isolationsstufen

Nebenläufigkeit verstehen statt hoffen: welche Anomalien eine Isolationsstufe zulässt, warum längere Transaktionen teurer sind als sie aussehen und wann Sperren fachlich gehören.

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

  1. Lesen
  2. Rechnen
  3. Schreiben
  4. 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 LesenEine noch nicht bestätigte Änderung wird sichtbar. Die meisten Systeme lassen das standardmäßig nicht zu.
Nicht wiederholbares LesenDerselbe Datensatz liefert innerhalb einer Transaktion zweimal unterschiedliche Werte.
PhantomEine wiederholte Bereichsabfrage liefert zusätzliche Zeilen, weil nebenher eingefügt wurde.
Verlorene AktualisierungZwei 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.

Route

Gelesen ist nicht geprüft: Im Modul entscheidest du die Fälle selbst und siehst danach, wo dein Urteil trägt.

3 Checks starten →

Modul-Aufbau

EINFÜHRUNGWas gleichzeitig passieren darf~15 Min
ADR-001NEBENLÄUFIGKEITsolide
ADR-002ISOLATIONSSTUFEsenior
SORT-003MISSION · TRANSAKTIONSLÄNGEsenior

Quellen

  1. 01postgresql.org/docs/current/transaction-iso.html
  2. 02microsoft.com/en-us/research/publication/a-cri…sql-isolation-levels

Verfasst von Julian Zentgraf