Multiversion Concurrency Control

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Multiversion concurrency control (MCC, MVCC, 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 eine Transaktion nie auf Datenbankobjekte warten muss. Zu diesem Zweck werden intern verschiedene Versionen eines Objektes gehalten, die z. B. durch Zeitstempel oder fortlaufend erhöhte Transaktions-Nummern 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

\text{T}_\text{j}\text{ mit }j=\underset{\forall\,\text{bel}}{\text{maxarg}}\left\{ \text{TS}\left(T_\text{bel}\right) : \text{TS}\left(T_\text{bel}\right) < \text{TS}\left(T_i\right) \right\}

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).

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[Bearbeiten]

Viele der heute erhältlichen Datenbanksysteme implementieren diese Technik:

Siehe auch[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. ArangoDB Homepage
  2. Berkeley DB Reference Guide: Degrees of Isolation
  3. CouchDB: The Definitive Guide - Eventual Consistency
  4. White paper by Roman Rokytskyy Firebird and Multi Version Concurrency Control
  5. http://developers.sones.de/wiki/doku.php
  6. Multi-Version Concurrency Control in the H2 Database Engine
  7. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatBill Todd: InterBase: What Sets It Apart. 2000, abgerufen am 4 May.
  8. MySQL 5.1 Reference Manual, Section 14.2.12: Implementation of Multi-Versioning
  9. MySQL 5.1 Reference Manual, Section 14.6.1: Falcon Features
  10. ObjectStore Advanced C++ User's Guide, chapter two
  11. Oracle® Database Concepts, Chapter 13 Data Concurrency and Consistency [1] Multiversion Concurrency Control
  12. PostgreSQL 8.3 Documentation, Chapter 12: Concurrency Control