Zurück zur Übersicht

Begriff

MVCC (Multi-Version Concurrency Control)

Database Computer Science S3
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Klassische Datenbanken nutzen Locks (Sperren). Wenn ich lese ("SELECT * FROM User"), darfst du nicht schreiben ("UPDATE User"). Du musst warten. Das ist langsam. MVCC ist die Lösung: Readers never block Writers. Writers never block Readers. Jede Transaktion sieht eine eigene Version der Datenbank (Snapshot). Wenn ich Zeile X ändere, überschreibe ich sie nicht. Ich erstelle eine neue Version von Zeile X (Version 2). Die alte Version (Version 1) bleibt da. Andere, die vor mir angefangen haben zu lesen, sehen weiterhin Version 1. Ich sehe Version 2. Erst wenn alle alten Leser fertig sind, wird Version 1 gelöscht (Vacuum). Das ist der Standard in PostgreSQL, Oracle, MySQL (InnoDB).

Merksatz: Eine Methode zur Steuerung des gleichzeitigen Zugriffs auf Datenbanken, bei der statt Sperren (Locks) mehrere Versionen eines Datensatzes vorgehalten werden, sodass Lese- und Schreibvorgänge sich nicht gegenseitig blockieren.


Quick-Check

  1. Vorteil?
    Massive Performance bei gemischten Workloads (OLTP). Ein Backup (Dump) kann stundenlang laufen und blockiert keine einzige Schreib-Transaktion.
  2. Nachteil?
    Speicherplatz. Man braucht mehr Platz für die Versionen. Und CPU für Garbage Collection (Vacuum).
  3. Isolationslevel?
    MVCC implementiert meist "Snapshot Isolation" oder "Repeatable Read".