Multiversion-Concurrency-Control

MultiVersion Concurrency Control (MVCC) ist eine effiziente Methode, um bei z.B. einer relationalen Datenbank viele gleichzeitige Zugriffe zu ermöglichen, ohne die Datenkonsistenz zu gefährden oder in eine Deadlock-Situation zu geraten.    Um das zu realisieren verwendet MVCC Zeitstempel und sich automatisch erhöhende Transaktions-IDs: dadurch werden Transaktionen serialisiert und  keine Transaktion muss auf die andere warten. Die verschiedenen Objektversionen von einer Transaktion mit dem entsprechenden Zeitstempel  werden von der DB-Engine nach einem ausgeklügeltem System verwaltet.

Beim Row Level Locking wird nur ein Teil einer Datenbank während einer Transaktion gesperrt. Dadurch können sich mehrere Benutzer einen  Teil der Datenbank teilen. Dies hat Vorteile bei hohen Benutzerzahlen. Row-Level Locking benötigt ein gutes Transaktionssystem, da es sonst zu viele Row-Level Locks (respektive Column Level Locks) gibt, welche die Performance der DB herabsetzen.  Das Transaktionsmanagement hat die Aufgabe, die Schreibzugriffe zu verzögern und zu sammeln, um sie dann "in einem Rutsch" in die DB zu schreiben.  Die MySQL-Storage-Engine Falcon unterstützt Multiversion Concurrency Control, was es erlaubt, Datensätze ohne Row-Level-Locking zu aktualisieren.  Falcon benötigt dank MVCC kein Locking während einer Update- oder Insert-Operation.  MVCC oder MCC wird in folgenden Datenbanken eingesetzt: MySQL (InnoDB oder Falcon) Firebird-DB, Berkeley-DB, InterBase, Microsoft SQL Server 2005, ORACLE oder PostgreSQL.  Das MVCC-Konzept kommt u.a. auch bei NoSQL-Datenbanken zum Einsatz.  Multiversion Concurrency Control wird auch Multi-Generational Concurrency Control genannt (MGCC).                                   
Siehe auch:    datenbank   MySQL   InnoDB   Referentielle-Integrität   Konsistenz   Schlüssel   Deadlock   ACID   Normalform   NoSQL