Heim >Datenbank >MySQL-Tutorial >MySQL verfügt über mehrere Isolationsstufen

MySQL verfügt über mehrere Isolationsstufen

青灯夜游
青灯夜游Original
2019-03-01 16:57:2278052Durchsuche

MySQL verfügt über 4 Isolationsstufen: 1. Lesen Sie nicht festgeschriebene Inhalte in dieser Isolationsstufe. Alle Transaktionen können die Ausführungsergebnisse anderer nicht festgeschriebener Transaktionen sehen. 2. Lesen Sie den Übermittlungsinhalt erst, nachdem eine Transaktion übermittelt wurde. Die dadurch geänderten Daten werden von anderen Dingen gesehen. 3. Wiederholbares Lesen; die während der Ausführung einer Transaktion angezeigten Daten stimmen immer mit den Daten überein, die beim Start der Transaktion angezeigt werden. 4. Serialisierbar; indem die Sortierung von Transaktionen erzwungen wird, wodurch es unmöglich wird, dass sie miteinander in Konflikt geraten, wodurch das Phantomleseproblem gelöst wird.

MySQL verfügt über mehrere Isolationsstufen

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

Eine Transaktion weist ACID-Merkmale auf, nämlich (Atomizität, Konsistenz, Isolation, Haltbarkeit, d. h. Atomizität, Konsistenz, Isolation und Haltbarkeit).

Die vier Isolationsstufen von MySQL

Der SQL-Standard definiert 4 Arten von Isolationsstufen, einschließlich einiger spezifischer Regeln zur Begrenzung interner und externer Transaktionen, die sich ändern sichtbar sind und welche unsichtbar sind. Niedrigere Isolationsstufen unterstützen im Allgemeinen eine höhere Parallelität und haben einen geringeren Systemaufwand. [Video-Tutorial-Empfehlung: MySQL-Tutorial]

1. Nicht festgeschriebene Inhalte lesen (read-uncommitted)

In dieser Isolationsstufe können alle Transaktionen Sehen Sie sich die Ausführungsergebnisse anderer nicht festgeschriebener Transaktionen an. Diese Isolationsstufe wird in praktischen Anwendungen selten verwendet, da ihre Leistung nicht viel besser ist als die anderer Stufen.

Das Problem, das bei dieser Isolationsstufe auftritt, ist: Dirty Read, d. h. es werden nicht festgeschriebene Daten gelesen.

2. Read-Committed

Dies ist die Standardisolationsstufe der meisten Datenbanksysteme (jedoch nicht die MySQL-Standardeinstellung). Es erfüllt die einfache Definition von Isolation: Eine Transaktion kann nur Änderungen sehen, die von festgeschriebenen Transaktionen vorgenommen wurden.

Das Problem mit dieser Isolationsstufe ist: Nicht wiederholbares Lesen, d. h. nicht wiederholbares Lesen bedeutet, dass wir möglicherweise unterschiedliche Ergebnisse sehen, wenn wir genau dieselbe Select-Anweisung in derselben Transaktion ausführen.

Die möglichen Gründe für diese Situation sind:

1) Es gibt einen neuen Commit in einer Cross-Transaktion, der zu Datenänderungen führt

2), a Wenn der Datenbank wird von mehreren Instanzen betrieben, andere Instanzen derselben Transaktion können während der Verarbeitung der Instanz neue Commits haben

3. Wiederholbares Lesen (wiederholbares Lesen)

Dies ist die Standard-Transaktionsisolationsstufe von MySQL, die sicherstellt, dass mehrere Instanzen derselben Transaktion beim gleichzeitigen Lesen von Daten dieselben Datenzeilen sehen.

Aber theoretisch wird dies zu einem weiteren heiklen Problem führen: Phantom Read.

Einfach ausgedrückt bedeutet Phantomlesen, dass, wenn ein Benutzer einen bestimmten Bereich von Datenzeilen liest, eine andere Transaktion eine neue Zeile in den Bereich einfügt. Wenn der Benutzer einen anderen Bereich von Datenzeilen liest, werden Sie feststellen, dass es welche gibt neue „Phantom“-Reihen.

InnoDB- und Falcon-Speicher-Engines lösen dieses Problem durch den Multiversion-Parallelitätskontrollmechanismus (MVCC, Multiversion Concurrency Control).

4. Serialisierbar

Es löst das magische Problem, indem es die Reihenfolge der Transaktionen erzwingt und es unmöglich macht, dass sie miteinander in Konflikt geraten die Frage. Kurz gesagt, es fügt jeder gelesenen Datenzeile eine gemeinsame Sperre hinzu. Auf dieser Ebene kann es zu zahlreichen Zeitüberschreitungen und Sperrkonflikten kommen.

Auf dieser Ebene kann es zu einer großen Anzahl von Zeitüberschreitungen und Sperrkonflikten kommen.

Empfohlenes Lernen: MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonMySQL verfügt über mehrere Isolationsstufen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn