EMZETT.
Login

MVCC und Isolationsstufen

Kurz: MVCC (Multi-Version Concurrency Control) hält mehrere Versionen einer Zeile vor, sodass Lesende nicht auf Schreibende warten. Isolationsstufen bestimmen, welche Anomalien parallele Transaktionen sehen dürfen.

Genauer: Jede Transaktion arbeitet auf einem Schnappschuss. Ein Update erzeugt eine neue Zeilenversion, die alte bleibt für laufende Leser sichtbar, bis sie niemand mehr braucht (Vacuum). So blockieren Leser Schreiber nicht und umgekehrt.

Im Detail

  • Anomalien: Dirty Read (nicht Committetes lesen), Non-repeatable Read, Phantom Read, Write Skew.
  • Read Committed: Jede Abfrage sieht den letzten Commit. Standard in PostgreSQL.
  • Repeatable Read/Snapshot: Ganze Transaktion sieht denselben Schnappschuss.
  • Serializable: Verhält sich, als liefen Transaktionen nacheinander (z. B. SSI in PostgreSQL).
  • Write Skew: Zwei Transaktionen lesen dasselbe und ändern verschiedene Zeilen, brechen so eine gemeinsame Regel.
  • Sperren: SELECT … FOR UPDATE für explizites Sperren.
  • Kosten: Speicherplatz für Versionen, Bereinigung (Vacuum), Wiederholung bei Konflikten.

Siehe auch: Datenbank-Transaktionen und ACID, Write-Ahead-Log und Wiederherstellung