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

Detaillierte Erklärung von count(), group by, order by in MySQL

Ich bin vor Kurzem auf ein Problem gestoßen, als ...

So zeigen Sie JSON-Daten in HTML an

Hintergrund: Manchmal müssen wir JSON-Daten direk...

Erläuterung der Schritte für Tomcat zur Unterstützung des https-Zugriffs

So ermöglichen Sie Tomcat die Unterstützung des h...

So fügen Sie die Tomcat-Serverkonfiguration zu Eclipse hinzu

1. Fenster -> Einstellungen, um das Eclipse-Ei...

MySql fügt Daten erfolgreich ein, meldet aber [Err] 1055 Fehlerlösung

1. Frage: Ich habe in diesen Tagen Einfügevorgäng...

Verschachtelte Verwendungsoperation für MySQL-Aggregatfunktionen

Zweck: Verschachtelte Verwendung von MySQL-Aggreg...

Vue verwendet Openlayers zum Laden von Tiandi Map und Amap

Inhaltsverzeichnis 1. Weltkarte 1. Installieren S...

Lösung für die Navicat Premier-Remoteverbindung zum MySQL-Fehler 10038

Schlägt die Remote-Verbindung zu MySQL fehl, kann...

mysql5.7-Remotezugriffseinstellungen

Das Einrichten des Fernzugriffs in mysql5.7 funkt...

Erklären Sie anhand eines Diagramms, was Web 2.0 ist

Heutzutage sprechen wir oft über Web 2.0. Was als...

So überspringen Sie Fehler bei der MySQL-Master-Slave-Replikation

1. Traditionelle Binlog-Master-Slave-Replikation,...

js um das Schlangenspiel mit Kommentaren zu implementieren

In diesem Artikelbeispiel wird der spezifische Co...

Grundlegender Installationsprozess von mysql5.7.19 unter winx64 (Details)

1. Herunterladen https://dev.mysql.com/downloads/...

Führen Sie die Schritte zum Aktivieren der GZIP-Komprimierung in Nginx aus.

Inhaltsverzeichnis Vorwort 1. Konfigurieren Sie d...