MVCCMVCC (Multi-Version Concurrency Control) ist eine Mehrversionen-Parallelitätskontrolle. Eine wichtige Funktion von InnoDB besteht darin, gleichzeitige Transaktionen und Rollbacks zu realisieren. Der Sperrmechanismus kann gleichzeitige Vorgänge steuern, hat jedoch einen hohen Systemaufwand. In den meisten Fällen kann MVCC Sperren auf Zeilenebene ersetzen. Die Verwendung von MVCC kann den Systemaufwand verringern. Die konkrete Implementierung besteht darin, jeder Zeile der Datenbank drei zusätzliche Felder hinzuzufügen:
Snapshot lesenBeispielsweise ist eine entsperrte Auswahloperation ein Snapshot-Lesevorgang. Das Aufkommen des Snapshot-Lesevorgangs basiert auf der Überlegung, die Parallelitätsleistung zu verbessern. Die Implementierung des Snapshot-Lesevorgangs basiert auf der Multiversion-Parallelitätssteuerung, nämlich MVCC. MVCC kann als eine Variante von Zeilensperren betrachtet werden. In vielen Fällen werden Sperrvorgänge vermieden und der Overhead verringert. Da es auf mehreren Versionen basiert, liest der Snapshot-Lesevorgang möglicherweise nicht unbedingt die neueste Version der Daten, sondern kann eine frühere historische Version sein. Aktueller MesswertGelesen werden die aktuellen Daten, und es ist nicht erforderlich, mithilfe des Undo-Protokolls den Zustand vor dem Start der Transaktion zurückzuverfolgen. Gelesen wird die neueste Version des Datensatzes. Beim Lesen muss außerdem sichergestellt werden, dass andere gleichzeitige Transaktionen den aktuellen Datensatz nicht ändern können und der gelesene Datensatz gesperrt wird.
Einfach ausgedrückt soll MVCC Lese-/Schreibkonflikte ohne Sperren erreichen, und dieser Lesevorgang bezieht sich auf das Lesen eines Snapshots, nicht auf das aktuelle Lesen. Das aktuelle Lesen ist eigentlich ein Sperrvorgang, der die Implementierung einer pessimistischen Sperre darstellt.
MVCC-ImplementierungsprinzipDrei versteckte Felder
Versionskette/Undo-ProtokollDenn das Rückgängig-Protokoll zeichnet die alte Version der Daten vor der Transaktion auf, und dann zeigt der Rollback-Zeiger im Zeilendatensatz auf die Position der alten Version, wodurch eine Versionskette gebildet wird. Die Lese-Ansicht durchläuft die DB_TRX_ID in der verknüpften Liste weiter, bis sie eine DB_TRX_ID findet, die bestimmte Bedingungen erfüllt. Dann ist der alte Datensatz, in dem sich die DB_TRX_ID befindet, die neueste „alte Version“, die die aktuelle Transaktion sehen kann. Ansicht lesenEs handelt sich um eine Sammlung aller aktuell aktiven Transaktionen (Transaktionen, die noch nicht festgeschrieben wurden), wenn die Transaktion geöffnet wird. Mit anderen Worten ist die Leseansicht die Leseansicht, die generiert wird, wenn eine Transaktion einen Snapshot-Lesevorgang ausführt. In dem Moment, in dem der Snapshot-Lesevorgang von der Transaktion ausgeführt wird, wird ein Snapshot des aktuellen Datenbanksystems generiert, der die ID der aktuell aktiven Transaktion im System aufzeichnet und verwaltet.
Der Gesamtprozess der MVCC-Implementierung:Zusammenfassen
siehe:[MySQL-Hinweise] MySQLs MVCC und Implementierungsprinzipien richtig verstehen (empfohlen) MySQL · Engine-Funktionen · InnoDB-Transaktionssystem (taobao.org) Detaillierte Erklärung von mvcc – Jianshu (jianshu.com) Damit schließen wir diesen Artikel zur eingehenden Untersuchung der MySQL-Mehrversions-Parallelitätskontrolle MVCC ab. Ich hoffe, dass es für jedermanns Studium hilfreich sein wird, und ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: So ändern Sie die Farbe der gesamten Zeile (tr), wenn die Maus in HTML stoppt
>>: CSS3-Übergangsrotationsperspektive, 2D3D-Animation und andere Effektbeispielcodes
Wenn Sie MySQL 5.7 verwenden, werden Sie feststel...
Inhaltsverzeichnis Vorwort denken Analysieren und...
Inhaltsverzeichnis 1.JSON-Zeichenfolge 1.1Json-Sy...
Überblick Prometheus ist ein Open-Source-Dienstüb...
Ich habe den Computer neu installiert und die neu...
1. Wenn MySQL nicht erfolgreich gestartet wird, ü...
Inhaltsverzeichnis Was ist virtueller Dom? Warum ...
In diesem Artikel wird der spezifische Code von U...
Docker Compose kann die Orchestrierung von Docker...
In diesem Artikel wird der spezifische Code von j...
Es gibt drei Seiten A, B und C. Seite A enthält Se...
Da ich immer vscode zur Entwicklung von Front-End...
Zuvor habe ich mehrere Möglichkeiten vorgestellt,...
Problembeschreibung Die MySQL-Startfehlermeldung ...
1. Was ist Wir können die Kommunikation zwischen ...