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

Natives JavaScript zum Erreichen von Skinning

Der spezifische Code zur Implementierung von Skin...

Warum wird in React nicht empfohlen, einen Index als Schlüssel zu verwenden?

1. Vergleichen Sie den alten virtuellen DOM mit d...

Detaillierte Erklärung zur Verwendung von MySQL, wobei

Inhaltsverzeichnis 1. Einleitung 2. Haupttext 2.1...

MySQL 5.7.18 Installer Installation Download Grafik-Tutorial

Dieser Artikel enthält das ausführliche Installat...

So behandeln Sie einen Überlauf numerischer MySQL-Typen

Lassen Sie mich Ihnen nun eine Frage stellen. Was...

Detaillierte Erklärung zur Verwendung von MySQL-Gruppenlinks

Gruppieren und Verknüpfen sind in MySQL die beide...

Entdecken Sie die Wahrheit hinter dem Neuladevorgang in Nginx

Der heutige Artikel stellt hauptsächlich den Neul...

Detaillierte Verwendung des Kubernetes-Objektvolumens

Überblick Volume ist die Abstraktion und Virtuali...

Lösung für langsame Netzwerkanforderungen im Docker-Container

Bei der Verwendung von Docker wurden mehrere Prob...

Detailliertes Tutorial zur Installation von Centos8 auf VMware

Offizielle Website-Adresse von CentOS https://www...

So verwenden Sie CocosCreator zur Tonverarbeitung bei der Spieleentwicklung

Inhaltsverzeichnis 1. Grundlagen der Audiowiederg...