Multiversion Concurrency Control (MVCC, MCC, multi-generational concurrency control) ist ein Verfahren aus der Datenbanktechnik, das dazu dient, konkurrierende Zugriffe auf eine Datenbank möglichst effizient auszuführen, ohne zu blockieren oder die Konsistenz der Datenbank zu gefährden.
Dabei wird sichergestellt, dass lesende Zugriffe nie auf Schreibvorgänge in Datenbankobjekten warten müssen. Zu diesem Zweck werden intern verschiedene Versionen eines Objektes gehalten, die z. B. durch Zeitstempel oder fortlaufend erhöhte Transaktionsnummern voneinander unterschieden werden. Jede Objektversion hat dann einen Zeitstempel vom Zeitpunkt ihres Schreibens durch eine beliebige Transaktion Tbel, auf diese Weise kann Transaktion Ti die jeweils aktuelle Version des Objektes lesen, deren Zeitstempel kleiner ist als TS(Ti), d. h., die von der Transaktion
geschrieben wurde.
Jedes Objekt P besitzt ebenso einen Lese-Zeitstempel RTS(P) (read timestamp), der den Startzeitstempel TS(Tneu) derjenigen Transaktion Tneu angibt, die P zuletzt gelesen hat. Wenn Ti dieses Objekt P ändert und TS(Ti) < RTS(P)=TS(Tneu) gilt, dann wird die Transaktion Ti abgebrochen und neu gestartet. Andernfalls erstellt Ti eine neue Version von P und setzt den Lese-Schreib-Zeitstempel von P auf TS(Ti).
MVCC ist klar abzugrenzen vom IsolationslevelRead Uncommitted, welches ebenfalls sicherstellt, dass lesende Zugriffe nie auf Schreibvorgänge warten müssen. Im Gegensatz zu Read Uncommitted gewährleistet MVCC jedoch immer eine konsistente Sicht auf die Daten. Die Verwendung von MVCC schließt das Isolationslevel Read Uncommitted somit grundsätzlich aus, da keine Dirty Reads mehr möglich sind.
Der Nachteil dieses Systems sind die Kosten, um viele verschiedene Versionen eines Objekts in der Datenbank zu halten. Auf der anderen Seite werden lesende Zugriffe nie blockiert, was sehr wichtig bei ausgelasteten Datenbanken sein kann, in denen sehr häufig nur gelesen wird.
Datenbanken mit MVCC
Viele der heute erhältlichen Datenbanksysteme implementieren diese Technik:
↑Bill Todd: InterBase: What Sets It Apart. 2000, archiviert vom Original (nicht mehr online verfügbar) am 26. Februar 2006; abgerufen am 19. September 2020.Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/dbginc.com