Implementierung der MySQL-Mehrversions-Parallelitätskontrolle MVCC

Implementierung der MySQL-Mehrversions-Parallelitätskontrolle MVCC

Einstellungen für die Transaktionsisolationsebene

globale Isolationsstufe für Transaktionen festlegen, Read Committed; //globale Isolationsstufe für Sitzungstransaktionen festlegen, Read Committed; //aktuelle Sitzung

Ändern Sie die Methode zur Übermittlung von Transaktionen (ob automatisch übermittelt werden soll, MySQL übermittelt standardmäßig automatisch).

SET AUTOCOMMIT = 1; //Automatisch committen, 0 manuell committen

Verschiedene Datenbank-Engines haben unterschiedliche MVCC-Modi, normalerweise eine optimistische und eine pessimistische Parallelitätskontrolle.

innodb

veranschaulichen:

MVCC von InnoDB wird implementiert, indem nach jeder Datensatzzeile zwei versteckte Spalten gespeichert werden. In diesen beiden Spalten wird in einer die Erstellungszeit der Zeile und in der anderen die Ablaufzeit (oder Löschzeit) der Zeile gespeichert. Gespeichert wird natürlich nicht der tatsächliche Zeitwert, sondern die Systemversionsnummer. Bei jedem Start einer neuen Transaktion wird die Systemversionsnummer automatisch erhöht. Die Systemversionsnummer zu Beginn der Transaktion wird als Transaktionsversionsnummer verwendet, um sie mit der abgefragten zu vergleichen.

WÄHLEN

InnoDB prüft jede Zeile anhand der folgenden beiden Bedingungen:

a. InnoDB sucht nur nach Datenzeilen, deren Versionen älter sind als die aktuelle Transaktionsversion (das heißt, die Systemversionsnummer der Zeile ist kleiner oder gleich der Systemversionsnummer der Transaktion). Dadurch wird sichergestellt, dass die von der Transaktion gelesenen Zeilen entweder vor Beginn der Transaktion vorhanden waren oder von der Transaktion selbst eingefügt oder geändert wurden.

b. Die gelöschte Version der Zeile ist entweder nicht definiert oder größer als die aktuelle Transaktionsversionsnummer. Dadurch wird sichergestellt, dass von einer Transaktion gelesene Zeilen nicht vor Beginn der Transaktion gelöscht wurden.

Als Abfrageergebnisse können nur Datensätze zurückgegeben werden, die die beiden oben genannten Bedingungen erfüllen.

EINFÜGEN

InnoDB speichert die aktuelle Systemversionsnummer als Zeilenversionsnummer für jede neu eingefügte Zeile.

LÖSCHEN

InnoDB speichert die aktuelle Systemversionsnummer als Zeilenlöschkennung für jede gelöschte Zeile.

AKTUALISIEREN

InnoDB speichert die aktuelle Systemversionsnummer als Zeilenversionsnummer beim Einfügen einer neuen Zeile und speichert die aktuelle Systemversionsnummer in der ursprünglichen Zeile als Zeilenlöschmarkierung.

Beachten:

MVCC funktioniert nur auf den Isolationsebenen REPEATABLE READ und READ COMMITED. Die anderen beiden Isolationsebenen sind mit MVCC nicht kompatibel, da READ UNCOMITTED immer die neueste Datenzeile liest und nicht die Datenzeile, die der aktuellen Transaktionsversion entspricht. SERIALIZABLE sperrt alle gelesenen Zeilen.

Überprüfen Sie den Status der Tabelle

Tabellenstatus wie „Aufgabe“ anzeigen\G;

Dirty Reads, nicht wiederholbare Reads und Phantom Reads

Dirty Read: Die aktuelle Transaktion liest den nicht festgeschriebenen Status einer anderen Transaktion und die Transaktion ist nicht isoliert.

Nicht wiederholbares Lesen: Es wird eine Transaktionsisolation erreicht, es treten jedoch Dateninkonsistenzen auf, wenn dieselben Daten zweimal gelesen werden.

Phantomlesen: Wenn derselbe Datensatz zweimal abgefragt wird, werden neue Daten gefunden. Dies liegt hauptsächlich daran, dass andere Transaktionen Daten in den Datensatz in der Mitte eingefügt haben. (Das Hinzufügen einer Lückensperre löst dieses Problem)

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Implementierung der MVCC-Mehrversions-Parallelitätskontrolle von MySQL
  • Detaillierte Erläuterung des MySQL Multi-Version Concurrency Control Mechanism (MVCC)-Quellcodes
  • Detaillierte Untersuchung der MySQL-Mehrversions-Parallelitätskontrolle MVCC
  • Analyse des zugrunde liegenden Prinzips der MySQL-Mehrversions-Parallelitätskontrolle MVCC
  • Implementierung von MySQL Multi-version Concurrency Control MVCC
  • Details zur Mysql MVCC-Mehrversions-Parallelitätssteuerung

<<:  Analyse der Lösung für das Problem der gemeinsamen Nutzung von Nginx-Sitzungen

>>:  Das Vue-CLI-Framework implementiert eine Timer-Anwendung

Artikel empfehlen

Zusammenfassung der MySQL-Zeichensätze

Inhaltsverzeichnis Zeichensatz Vergleichsregeln V...

Schritte zum Erstellen eines CentOS-Containers über Docker

Inhaltsverzeichnis Vorwort Erstellen Sie ein Brüc...

Navicat für MySQL-Tutorial

Zuerst müssen Sie Navicat für MySQL herunterladen...

Einige Erfahrungen in der Selbstkultivierung von Künstlern

Da der Einfluss des Unternehmens wächst und seine...

Beispiele für MySQL-Batch-Hinzufügungs- und Speichermethoden

Beim Anmelden am Stresstest sind viele verschiede...

Klassifizierung der Farbeigenschaften von Webseiten

Klassifizierung der Farbeigenschaften Jede Farbe ...

N Möglichkeiten, Elemente mit CSS zu zentrieren

Inhaltsverzeichnis Vorwort Zentrieren von Inline-...

Eine Zeile CSS-Code, die Chrome zum Absturz bringt

Allgemeiner CSS-Code verursacht nur geringfügige ...

So öffnen Sie externe Netzwerkzugriffsrechte für MySQL

Wie unten dargestellt: Führen Sie hauptsächlich A...

Einfache Implementierung von HTML zum Erstellen eines persönlichen Lebenslaufs

Lebenslauf-Code: XML/HTML-CodeInhalt in die Zwisc...

Detaillierte Schritte zur Installation des NERDTree-Plugins in Vim unter Ubuntu

NERDTree ist ein Dateisystembrowser für Vim. Mit ...

JavaScript, um den Effekt des Klickens auf das Untermenü zu erzielen

In diesem Artikel wird der spezifische JavaScript...

So überwachen Sie globale Variablen im WeChat-Applet

Ich bin kürzlich bei der Arbeit auf ein Problem g...