<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Multiversion_Concurrency_Control</id>
	<title>Multiversion Concurrency Control - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Multiversion_Concurrency_Control"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Multiversion_Concurrency_Control&amp;action=history"/>
	<updated>2026-05-21T13:52:50Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Multiversion_Concurrency_Control&amp;diff=380157&amp;oldid=prev</id>
		<title>imported&gt;TaxonBot: Bot: Auflösung doppelter toter Links nach https://de.wikipedia.org/w/index.php?title=Wikipedia:Bots/Anfragen&amp;oldid=266185123#Aufl%C3%B6sung_der_doppelten_Toten_Links</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Multiversion_Concurrency_Control&amp;diff=380157&amp;oldid=prev"/>
		<updated>2026-04-17T10:32:39Z</updated>

		<summary type="html">&lt;p&gt;Bot: Auflösung doppelter toter Links nach https://de.wikipedia.org/w/index.php?title=Wikipedia:Bots/Anfragen&amp;amp;oldid=266185123#Aufl%C3%B6sung_der_doppelten_Toten_Links&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Multiversion Concurrency Control&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;MVCC&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;MCC&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;multi-generational concurrency control&amp;#039;&amp;#039;&amp;#039;) ist ein Verfahren aus der [[Datenbank]]technik, das dazu dient, konkurrierende Zugriffe auf eine Datenbank möglichst effizient auszuführen, ohne zu [[Verklemmung|blockieren]] oder die Konsistenz der Datenbank zu gefährden.&lt;br /&gt;
&lt;br /&gt;
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.&amp;amp;nbsp;B. durch [[Zeitstempel]] oder fortlaufend erhöhte [[Transaktion (Informatik)|Transaktionsnummern]] voneinander unterschieden werden. Jede Objektversion hat dann einen Zeitstempel vom Zeitpunkt ihres Schreibens durch eine beliebige Transaktion T&amp;lt;sub&amp;gt;bel&amp;lt;/sub&amp;gt;, auf diese Weise kann Transaktion T&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; die jeweils aktuelle Version des Objektes lesen, deren Zeitstempel kleiner ist als TS(T&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;), d.&amp;amp;nbsp;h., die von der Transaktion&lt;br /&gt;
: &amp;lt;math&amp;gt;\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) &amp;lt; \text{TS}\left(T_i\right) \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
geschrieben wurde.&lt;br /&gt;
&lt;br /&gt;
Jedes Objekt P besitzt ebenso einen Lese-Zeitstempel RTS(P) (read timestamp), der den Startzeitstempel TS(T&amp;lt;sub&amp;gt;neu&amp;lt;/sub&amp;gt;) derjenigen Transaktion T&amp;lt;sub&amp;gt;neu&amp;lt;/sub&amp;gt; angibt, die P zuletzt gelesen hat. Wenn T&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; dieses Objekt P ändert und TS(T&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;) &amp;lt; RTS(P)=TS(T&amp;lt;sub&amp;gt;neu&amp;lt;/sub&amp;gt;) gilt, dann wird die Transaktion T&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; abgebrochen und neu gestartet. Andernfalls erstellt T&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; eine neue Version von P und setzt den Lese-Schreib-Zeitstempel von P auf TS(T&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
MVCC ist klar abzugrenzen vom [[Isolation (Datenbank)|Isolationslevel]] &amp;#039;&amp;#039;Read Uncommitted&amp;#039;&amp;#039;, welches ebenfalls sicherstellt, dass lesende Zugriffe nie auf Schreibvorgänge warten müssen. Im Gegensatz zu &amp;#039;&amp;#039;Read Uncommitted&amp;#039;&amp;#039; gewährleistet MVCC jedoch immer eine konsistente Sicht auf die Daten. Die Verwendung von MVCC schließt das Isolationslevel &amp;#039;&amp;#039;Read Uncommitted&amp;#039;&amp;#039; somit grundsätzlich aus, da keine [[Schreib-Lese-Konflikt|Dirty Reads]] mehr möglich sind.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Datenbanken mit MVCC ==&lt;br /&gt;
Viele der heute erhältlichen Datenbanksysteme implementieren diese Technik:&lt;br /&gt;
* [[ArangoDB]]&amp;lt;ref&amp;gt;{{Internetquelle |autor=ArangoDB GmbH |url=https://docs.arangodb.com/3.2/Manual/DataModeling/Documents/DocumentAddress.html |titel=Basics and Terminology · ArangoDB v3.2.9 Documentation |sprache=en |archiv-url=http://web.archive.org/web/20171213093016/https://docs.arangodb.com/3.2/Manual/DataModeling/Documents/DocumentAddress.html |archiv-datum=2017-12-13 |abruf=2025-07-09}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Berkeley DB]]&amp;lt;ref&amp;gt;{{Webarchiv |url=http://oracle.com/technology/documentation/berkeley-db/db/ref/transapp/read.html |text=Berkeley DB Reference Guide: Degrees of Isolation |wayback=20070627044657 |archiv-bot=2019-05-02 14:55:15 InternetArchiveBot}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[CouchDB]]&amp;lt;ref&amp;gt;{{Internetquelle |url=https://guide.couchdb.org/draft/consistency.html |titel=Eventual Consistency |abruf=2025-07-09}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* CortexDB&lt;br /&gt;
* [[Elasticsearch]]&lt;br /&gt;
* [[Firebird (Datenbank)]]&amp;lt;ref&amp;gt;White paper by Roman Rokytskyy {{Webarchiv |url=http://firebirdsql.org/doc/whitepapers/fb_vs_ibm_vs_oracle.htm |text=Firebird and Multi Version Concurrency Control |wayback=20070609214323 |archiv-bot=2019-05-02 14:55:15 InternetArchiveBot}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[FLAIM Database Engine|FLAIM]]&lt;br /&gt;
* GraphDB ([[sones GmbH]])&amp;lt;ref&amp;gt;{{Internetquelle |url=https://github.com/sones/sones/tree/master/GraphDB |titel=sones/GraphDB at master · sones/sones |sprache=en |abruf=2025-07-09}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[H2 Database|H2 Database Engine]] (experimentell ab Version 1.0.57 (25. August 2007))&amp;lt;ref&amp;gt;{{Internetquelle |url=http://www.h2database.com/html/advanced.html#mvcc |titel=Advanced |abruf=2025-07-09}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[InterBase]] (alle Versionen)&amp;lt;ref name=&amp;quot;IBMVCC&amp;quot;&amp;gt;{{Internetquelle |autor=Bill Todd |url=http://dbginc.com/tech_pprs/IB.html |titel=InterBase: What Sets It Apart |datum=2000 |archiv-url=https://web.archive.org/web/20060226083331/http://www.dbginc.com/tech_pprs/IB.html |archiv-datum=2006-02-26 |abruf=2020-09-19 |offline=1 |archiv-bot=2019-05-02 14:55:15 InternetArchiveBot}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Microsoft SQL Server]] (ab SQL Server 2005, allerdings verwenden ältere Versionen u.&amp;amp;nbsp;a. row-level-locking)&lt;br /&gt;
* [[MySQL]], wenn man die [[InnoDB]]&amp;lt;ref&amp;gt;MySQL 5.1 Reference Manual, [http://dev.mysql.com/doc/refman/5.1/en/innodb-multi-versioning.html Section 14.2.12: Implementation of Multi-Versioning]&amp;lt;/ref&amp;gt; oder [[Falcon (storage engine)|Falcon]]&amp;lt;ref&amp;gt;MySQL 5.1 Reference Manual, {{Toter Link |datum=2019-05 |url=http://mysql.org/doc/refman/5.1/en/se-falcon-features.html |text=Section 14.6.1: Falcon Features |archivebot=2019-05-02 14:55:15 InternetArchiveBot}}&amp;lt;/ref&amp;gt; storage engine verwendet.&lt;br /&gt;
* [[ObjectStore]] (nur im [[Lesemodus]])&amp;lt;ref name=&amp;quot;ObjectStoreMVCC&amp;quot;&amp;gt;ObjectStore &amp;#039;&amp;#039;Advanced C++ User’s Guide&amp;#039;&amp;#039;, {{Webarchiv |url=http://progress.com/realtime/techsupport/documentation/objectstore/r60/ostore/doc/user2/advtrans.htm#2296 |text=chapter two |wayback=20070823103141 |archiv-bot=2019-05-02 14:55:15 InternetArchiveBot}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Oracle (Datenbanksystem)|Oracle]]&amp;lt;ref&amp;gt;Oracle Database Concepts, Chapter 9 Data Concurrency and Consistency [https://docs.oracle.com/database/121/CNCPT/consist.htm#CNCPT221 docs.oracle.com] Multiversion Read Consistency&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[OrientDB]]&lt;br /&gt;
* [[PostgreSQL]]&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.postgresql.org/docs/8.3/mvcc.html |titel=Concurrency Control |datum=2013-02-07 |sprache=en |abruf=2025-07-09}}&amp;lt;/ref&amp;gt; und PostgreSQL Derivate wie [[Netezza]]&lt;br /&gt;
* [[SAP HANA]]&lt;br /&gt;
* [[Spanner (Datenbank)|Spanner]] (Google)&lt;br /&gt;
* [[ThinkSQL]]&lt;br /&gt;
* [[Zope Object Database]]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Transaktionaler Speicher]]&lt;br /&gt;
* [[Zeitstempelverfahren]]&lt;br /&gt;
* [[ACID]]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;/div&gt;</summary>
		<author><name>imported&gt;TaxonBot</name></author>
	</entry>
</feed>