MVCC
aus Wikipedia, der freien Enzyklopädie
Multiversion concurrency control (MCC oder MVCC) ist eine Methode aus der Datenbanktechnik, konkurrierende Zugriffe auf eine relationale Datenbank möglichst effizient auszuführen, ohne die Konsistenz der Datenbank zu gefährden oder zu einer Verklemmung der Datenbank zu führen.
MVCC benutzt Zeitstempel oder fortlaufend erhöhte Transaktions IDs um eine Serialisation zu erreichen. MVCC stellt sicher, dass eine Transaktion nie auf Datenbankobjekte warten muss und verwaltet die verschiedenen Versionen eines Objektes. Jede Version hat einen Zeitstempel vom Zeitpunkt des Schreibens, auf diese Weise kann Transaktion Ti die jeweils aktuelle Version des Objektes lesen, deren Zeitstempel kleiner ist als TS(Ti).
Jede Version eines Objektes hat ebenso einen Lese-Zeitstempel RTS (read timestamp); wenn Ti ein Objekt P ändert und TS(Ti) < RTS(P), 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).
Der offensichtliche 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 sein kann bei ausgelasteten Datenbanken, in denen sehr häufig nur gelesen wird.
Das freie ORDBMS PostgreSQL implementiert diese Technik [1]. MVCC wird ebenfalls für BDB- und InnoDB-Tabellen des freien RDBMS MySQL eingesetzt.