Detaillierte Erläuterung des Lese-Commits der MySQL-Transaktionsisolationsebene

Detaillierte Erläuterung des Lese-Commits der MySQL-Transaktionsisolationsebene

MySQL-Transaktionsisolationsebene anzeigen

mysql> Variablen wie „%isolation%“ anzeigen;
+---------------+----------------+
| Variablenname | Wert |
+---------------+----------------+
| tx_isolation | LESEN-COMMITTED |
+---------------+----------------+
1 Zeile im Satz (0,00 Sek.)

Sie können sehen, dass die aktuelle Transaktionsisolationsebene READ-COMMITTED ist.

Werfen wir einen Blick auf die Transaktionsisolierungsdetails unter der aktuellen Isolationsebene und öffnen zwei Abfrageterminals A und B.

Unten finden Sie eine Bestelltabelle. Die Anfangsdaten lauten wie folgt

mysql> wähle * aus „Reihenfolge“;
+----+--------+
| ID | Nummer |
+----+--------+
| 13 | 1 |
+----+--------+
1 Zeile im Satz (0,00 Sek.)

Der erste Schritt besteht darin, Transaktionen sowohl in A als auch in B zu starten.

mysql> Transaktion starten;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Der zweite Schritt besteht darin, die Zahlenwerte in den beiden Terminals abzufragen

A

 mysql> wähle * aus „Reihenfolge“;
+----+--------+
| ID | Nummer |
+----+--------+
| 13 | 1 |
+----+--------+
1 Zeile im Satz (0,00 Sek.)

B

 mysql> wähle * aus „Reihenfolge“;
+----+--------+
| ID | Nummer |
+----+--------+
| 13 | 1 |
+----+--------+
1 Zeile im Satz (0,00 Sek.)

Der dritte Schritt besteht darin, die Zahl in B auf 2 zu ändern, die Transaktion jedoch nicht festzuschreiben.

mysql> aktualisiere „Reihenfolge“, setze Nummer=2;
Abfrage OK, 1 Zeile betroffen (0,00 Sek.)
Übereinstimmende Zeilen: 1 Geändert: 1 Warnungen: 0

Schritt 4: Abfrage des Wertes in A

mysql> wähle * aus „Reihenfolge“;
+----+--------+
| ID | Nummer |
+----+--------+
| 13 | 1 |
+----+--------+
1 Zeile im Satz (0,00 Sek.)

Es wurde festgestellt, dass der Wert in A nicht geändert wurde.

Schritt 5: Transaktion B abschicken und den Wert in A erneut abfragen

B

mysql> festschreiben;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

A

mysql> wähle * aus „Reihenfolge“;
+----+--------+
| ID | Nummer |
+----+--------+
| 13 | 2 |
+----+--------+
1 Zeile im Satz (0,00 Sek.)

Es wird festgestellt, dass sich der Wert in A geändert hat

Schritt 6. Führen Sie ein Commit der Transaktion in A durch und fragen Sie die Werte von A und B erneut ab.

A

mysql> festschreiben;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> wähle * aus „Reihenfolge“;
+----+--------+
| ID | Nummer |
+----+--------+
| 13 | 2 |
+----+--------+
1 Zeile im Satz (0,00 Sek.)

B

mysql> wähle * aus „Reihenfolge“;
+----+--------+
| ID | Nummer |
+----+--------+
| 13 | 2 |
+----+--------+
1 Zeile im Satz (0,00 Sek.)

Es wird festgestellt, dass die Werte in A und B auf 2 geändert werden.

Hier ist ein einfaches schematisches Diagramm


Wir können sehen, dass, wenn die Transaktionsisolationsebene auf „Read Committed“ lautet, nach dem Committing der Transaktion B das Ergebnis des Commits der Transaktion B gelesen werden kann, auch wenn A nicht committet wurde. Dadurch wird das Dirty-Read-Problem gelöst.

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:
  • Details zur MySQL-Transaktionsisolationsebene
  • Tiefgreifendes Verständnis der Probleme mit der Transaktionsisolationsebene und dem Sperrmechanismus von MySQL
  • MySQL Series 10 MySQL-Transaktionsisolierung zur Implementierung der Parallelitätskontrolle
  • Beispielanalyse des Prinzips der MySQL-Transaktionsisolationsebene
  • Tiefgreifendes Verständnis der vier Isolationsebenen von MySQL-Transaktionen

<<:  CentOS 8 Installationshandbuch für Zabbix 4.4

>>:  Beschreibung der Schreibmethode des Foreach-Arrays in Vue und des Traversal-Arrays in js

Artikel empfehlen

Detaillierte Einführung in die Chrome-Entwicklertools - Zeitleiste

1. Übersicht Benutzer erwarten, dass die Webanwen...

Beispielerklärung für langsame MySQL-Abfragen und -Protokolle

1. Einleitung Durch Aktivieren des Slow Query Log...

Detaillierte Analyse der Prinzipien und der Verwendung von MySQL-Ansichten

Vorwort: In MySQL sind Ansichten wahrscheinlich e...

So richten Sie den Ziellink eines Tags auf ein Iframe

Code kopieren Der Code lautet wie folgt: <ifra...

Methoden und Schritte zum Upgrade von MySql5.x auf MySql8.x

Mehrere Unterschiede zwischen MySQL 5.x und MySQL...

Richtige Methode zum Laden von Schriftarten in Vue.js

Inhaltsverzeichnis Schriftarten mit font-face ric...

Beheben Sie den Fehler beim Löschen von MySQL-Benutzern

Als der Autor MySQL zum Hinzufügen eines Benutzer...

Detaillierte Erklärung von JavaScript zur Überwachung von Routenänderungen

Inhaltsverzeichnis Geschichte pushState() Methode...

HTML+CSS zum Erstellen eines geschichteten Pyramidenbeispiels

Dieser Artikel stellt hauptsächlich das Beispiel ...

So ziehen Sie das Docker-Image herunter, um die Version anzuzeigen

Um die Version und das Tag des Bildes anzuzeigen,...

PNG-Alpha-Transparenz in IE6 (vollständige Sammlung)

Viele Leute sagen, dass IE6 PNG-Transparenz nicht...