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:
|
<<: CentOS 8 Installationshandbuch für Zabbix 4.4
>>: Beschreibung der Schreibmethode des Foreach-Arrays in Vue und des Traversal-Arrays in js
Inhaltsverzeichnis ReagierenHooks Vorwort WarumHo...
1. Was ist Master-Slave-Replikation? Mithilfe der...
Vorwort Ich glaube, jeder ist mit dem Hinzufügen ...
Es gibt zwei Tabellen, und die Datensätze in Tabe...
Hintergrund Grundlegende Konzepte CSS filter wend...
1. Klicken Sie mit der rechten Maustaste auf das ...
Inhaltsverzeichnis Dropdown-Feld zur Mehrfachausw...
Das im Titel angesprochene Problem lässt sich sch...
Vorwort Ich hatte zuvor die 2375 Remote API von D...
Heute bin ich auf das MySQL-Dienstfehlerproblem 1...
In diesem Artikel wird der spezifische JavaScript...
1. Downloadadresse für das Flash-Plug-in-Paket: h...
Inhaltsverzeichnis Überblick 1. Download über URL...
Anwendungsszenarien: Der Sprungpfad muss entsprec...
Inhaltsverzeichnis Überblick Installieren Sie Gul...