Detaillierte Erklärung und Beispiele der MySQL-Isolationsebene

Detaillierte Erklärung und Beispiele der MySQL-Isolationsebene

Ich kenne lediglich den Isolationsgrad der Dinge, habe sie jedoch noch nie bedient.

Dirty Read: Eine Transaktion hat ein Datenelement aktualisiert und eine andere Transaktion liest zu diesem Zeitpunkt dieselben Daten. Aus irgendeinem Grund führt die vorherige Transaktion einen RollBack für den Vorgang aus, sodass die von der letzteren Transaktion gelesenen Daten falsch sind.

Nicht wiederholbares Lesen: Die Daten zwischen zwei Abfragen in einer Transaktion sind inkonsistent. Dies kann daran liegen, dass eine Transaktion die Originaldaten zwischen den beiden Abfragen aktualisiert hat.

Phantom Read: Die Anzahl der Dateneinträge in zwei Abfragen einer Transaktion ist inkonsistent. Beispielsweise fragt eine Transaktion mehrere Datenspalten ab, während eine andere Transaktion zu diesem Zeitpunkt mehrere neue Datenspalten einfügt. In der nächsten Abfrage findet die vorherige Transaktion mehrere Datenspalten, die sie vorher nicht hatte.

4 Isolationsebenen von MySQL

read uncommitted: Daten lesen, die nicht festgeschrieben wurden: Keines der Probleme ist gelöst
Festgeschriebenes Lesen: Festgeschriebene Daten lesen: Kann Dirty Reads lösen ---- Oracle-Standard
Wiederholbares Lesen: Erneutes Lesen: kann Dirty Read und nicht wiederholbares Lesen lösen - MySQL-Standard
serialisierbar: Serialisierung: kann Dirty Reads, nicht wiederholbare Reads und virtuelle Reads lösen - entspricht dem Sperren der Tabelle

Transaktionsisolationsebene Schmutzige Lektüre Nicht wiederholbares Lesen Phantom lesen
Lesen nicht festgeschrieben Ja Ja Ja
Nicht wiederholbares Lesen (Read-Committed) NEIN Ja Ja
Wiederholbares Lesen NEIN NEIN Ja
serialisierbar NEIN NEIN NEIN

Erstellen Sie eine Datentabelle:

Tabelle erstellen shuzhi
(
  id mediumint(8) Primärschlüssel,
  Name varchar(30),
  Shuzhi-Mittelwert (10)
);
Tabelle ändern Shuzhi Engine = InnoDB;
in Shuzhi-Werte einfügen (1, 'aa', 1000);
in Shuzhi-Werte einfügen (2, „bb“, 2000);
in Shuzhi-Werte einfügen (3, „cc“, 3000);
in Shuzhi-Werte einfügen (4, 'dd', 4000);
in Shuzhi-Werte einfügen (5, 'ee', 5000);
in Shuzhi-Werte einfügen (6, „ff“, 6000);
in Shuzhi-Werte einfügen (7, „gg“, 7000);
in Shuzhi-Werte einfügen (8, „hh“, 8000);

Beginnen Sie mit dem Testen der vier Isolationsebenen von Transaktionen. Die erste: read uncommitted

Festlegen der Isolationsebene

#Fragen Sie die aktuelle Isolationsstufe ab SELECT @@tx_isolation
#Isolationsstufe festlegen Isolationsstufe für Sitzungstransaktionen festlegen [Isolationsstufe]
Sitzungstransaktionsisolierungsebene festlegen Lesen nicht festgeschrieben

Starten Sie zuerst den ersten Prozess und starten Sie die Transaktion, ohne sie noch abzufragen

Fenster 1
Transaktion starten;

Öffnen Sie dann den zweiten Prozess (Terminal)
Öffnen Sie zunächst die Transaktion, um einen Datensatz zu ändern, ohne ihn festzuschreiben

Fenster 2
Transaktion starten;
Aktualisiere Shuzhi, setze Shuzhi='8888', wobei ID=7 ist;

Gehen Sie zur Datenbankabfrage und stellen Sie fest, dass der Wert von id = 7 immer noch 7000 ist und sich der Wert nicht geändert hat

Bildbeschreibung hier einfügen

Gehen Sie zu Fenster 1, um diesen Datensatz abzufragen

Fenster 1
Transaktion starten;
Wählen Sie * aus Shuzhi, wobei ID = 7 ist.

Bildbeschreibung hier einfügen

Es wird festgestellt, dass die gelesenen Daten die in Fenster 2 übermittelten Daten sind, nicht 7000

Dies ist das Ende dieses Artikels über Details und Beispiele zur MySQL-Isolationsebene. Weitere Informationen zur MySQL-Isolationsebene finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Tiefgreifendes Verständnis der vier Isolationsebenen von MySQL
  • Detaillierte Erläuterung der vier Transaktionsisolationsebenen in MySQL
  • Detaillierte Erläuterung des MySQL-Isolationsebenen-Operationsprozesses (cmd)
  • Analyse der vier Transaktionsisolationsstufen in MySQL anhand von Beispielen
  • Beispielanalyse des Prinzips der MySQL-Transaktionsisolationsebene
  • Detaillierte Erläuterung des Implementierungsprinzips der Transaktionsisolationsstufe in MySQL

<<:  Select unterstützt kein Doppelklick-DBClick-Ereignis

>>:  Demo für 10-Farbverlaufshintergrund des CSS-Containers (linear-gradient())

Artikel empfehlen

MySQL verwendet ein Limit, um die Beispielmethode für Paging zu implementieren

1. Grundlegende Implementierung des Limits Im All...

Grundlegende Ideen und Codes zur Implementierung von Videoplayern in Browsern

Inhaltsverzeichnis Vorwort Zusammenfassung der Au...

Verstümmelte Zeichen und Lösungen im MySQL-Zeichensatz

Vorwort Ein Zeichensatz ist eine Reihe von Symbol...

Flussdiagramm für den Webserverzugriff auf HTTP und HTTP-Zusammenarbeit

Ein Webserver kann mehrere Websites mit unabhängi...

So erstellen Sie eine TAR-Datei von WSL über Docker

Ich habe kürzlich mit der Remote-Entwicklungsfunk...

Verwenden Sie xshell, um eine Verbindung zum Linux-Server herzustellen

Vorteile der Verwendung von xshell zur Verbindung...

Befehl zum Entfernen (Löschen) eines symbolischen Links in Linux

Möglicherweise müssen Sie in Linux manchmal symbo...

JavaScript-Canvas zum Erstellen eines Rubbellos-Beispiels

In diesem Artikel wird der spezifische Code von J...

W3C Tutorial (16): Weitere W3C Aktivitäten

Dieser Abschnitt bietet einen Überblick über eini...

Analysieren Sie, wie Sie automatisch Vue-Komponentendokumentation generieren

Inhaltsverzeichnis 1. Aktuelle Situation 2. Commu...

Einführung in die JWT-Verifizierung mit Nginx und Lua

Inhaltsverzeichnis Vorwort Lua-Skript nignx.conf-...

mysql Backup-Skript und halten Sie es für 7 Tage

Skriptanforderungen: Sichern Sie die MySQL-Datenb...

Lösung für Indexfehler in MySQL aufgrund unterschiedlicher Feldzeichensätze

Was ist ein Index? Warum einen Index erstellen? I...