- MVCC
-
Multiversion concurrency control (MCC, MVCC, multi-generational concurrency control) 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 Serialisierung zu erreichen. MVCC stellt sicher, dass eine Transaktion nie auf Datenbankobjekte warten muss und verwaltet die verschiedenen Versionen eines Objektes. Jede Objektsversion hat 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 Tj mit j=maxarg∀bel{TS(Tbel):TS(Tbel)<TS(Ti)} geschrieben wurde.
Jede Version eines Objektes 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 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.
Viele der heute erhältlichen Datenbanksysteme implementieren diese Technik:
- Berkeley DB [1]
- EXASolution[2]
- Firebird (Datenbank) [3]
- FLAIM
- H2 Database Engine (experimentell ab Version 1.0.57 (25. August 2007)) [4]
- InterBase (all versions) [5]
- Microsoft SQL Server (nur im SQL Server 2005, allerdings verwenden ältere Versionen akzeptable Alternativen wie row-level-locking)
- MySQL wenn man die InnoDB [6] oder Falcon [7] storage engine verwendet.
- ObjectStore (nur im Lesemodus)[8]
- Oracle [9]
- PostgreSQL [10] und PostgreSQL Derivate wie Netezza
- ThinkSQL
- Zope Object Database
Einzelnachweise
- ↑ Berkeley DB Reference Guide: Degrees of Isolation
- ↑ www.exasol.com
- ↑ White paper by Roman Rokytskyy Firebird and Multi Version Concurrency Control
- ↑ Multi-Version Concurrency Control in the H2 Database Engine
- ↑ Bill Todd: InterBase: What Sets It Apart. 2000. Abgerufen am 4 May.
- ↑ MySQL 5.1 Reference Manual, Section 14.2.12: Implementation of Multi-Versioning
- ↑ MySQL 5.1 Reference Manual, Section 14.6.1: Falcon Features
- ↑ ObjectStore Advanced C++ User's Guide, chapter two
- ↑ Oracle® Database Concepts, Chapter 13 Data Concurrency and Consistency [1] Multiversion Concurrency Control
- ↑ PostgreSQL 8.3 Documentation, Chapter 12: Concurrency Control
Weblinks
Wikimedia Foundation.