Heim  >  Artikel  >  Datenbank  >  Was sind die Isolationsstufen von MySQL?

Was sind die Isolationsstufen von MySQL?

王林
王林Original
2020-06-24 15:37:343602Durchsuche

Es gibt 4 MySQL-Isolationsstufen, nämlich: 1. Read Uncommitted (Lesen nicht festgeschriebener Inhalte); 2. Read Committed (Lesen übermittelter Inhalte); 4. Serializable;

Was sind die Isolationsstufen von MySQL?

(Empfohlenes Tutorial: MySQL-Tutorial )

Die vier Isolationsstufen von MySQL

Der SQL-Standard definiert vier Arten von Isolationsstufen, einschließlich einiger spezifischer Regeln, um einzuschränken, welche Änderungen innerhalb und außerhalb einer Transaktion sichtbar und welche unsichtbar sind. Niedrigere Isolationsstufen unterstützen im Allgemeinen eine höhere Parallelität und haben einen geringeren Systemaufwand.

1. Nicht festgeschriebenen Inhalt lesen

Auf dieser Isolationsstufe können alle Transaktionen die Ausführungsergebnisse anderer nicht festgeschriebener Transaktionen sehen. Diese Isolationsstufe wird in praktischen Anwendungen selten verwendet, da ihre Leistung nicht viel besser ist als die anderer Stufen. Das Lesen nicht festgeschriebener Daten wird auch als Dirty Read bezeichnet.

2. Read Committed (Übermittlungsinhalt lesen)

Dies ist die Standardisolationsstufe der meisten Datenbanksysteme (jedoch nicht die MySQL-Standardeinstellung).

Es entspricht der einfachen Definition von Isolation: Eine Transaktion kann nur Änderungen sehen, die von festgeschriebenen Transaktionen vorgenommen wurden. Diese Isolationsstufe unterstützt auch das sogenannte nicht wiederholbare Lesen, da andere Instanzen derselben Transaktion während der Verarbeitung der Instanz möglicherweise neue Commits haben, sodass dieselbe Auswahl möglicherweise unterschiedliche Ergebnisse zurückgibt.

3. Wiederholbares Lesen (wiederlesbar)

Dies ist die Standard-Transaktionsisolationsstufe von MySQL, die sicherstellt, dass Sie, wenn mehrere Instanzen derselben Transaktion gleichzeitig Daten lesen werden die gleichen Datenzeilen sehen.

Aber theoretisch wird dies zu einem weiteren heiklen Problem führen: Phantom Read. Vereinfacht ausgedrückt bedeutet Phantomlesen, dass, wenn der Benutzer einen bestimmten Bereich von Datenzeilen liest, eine andere Transaktion eine neue Zeile in den Bereich einfügt. Wenn der Benutzer die Datenzeilen im Bereich liest, wird er feststellen, dass es neue „Phantome“ gibt .

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

4. Serialisierbar (serialisierbar)

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

Problem

Diese vier Isolationsstufen werden mithilfe unterschiedlicher Sperrtypen implementiert. Wenn dieselben Daten gelesen werden, kann es leicht zu Problemen kommen. Beispiel:

1. Dirty Read:

Eine Transaktion hat zu diesem Zeitpunkt dieselben Daten aktualisiert, wenn der vorherige RollBack-Vorgang ausgeführt wurde ausgeführt wird, sind die von der letztgenannten Transaktion gelesenen Daten falsch.

2. Nicht wiederholbares Lesen:

Die Daten sind zwischen zwei Abfragen einer Transaktion inkonsistent. Dies kann daran liegen, dass zwischen den beiden Originaldaten eine Transaktionsaktualisierung eingefügt wurde.

3. Phantom Read:

Die Anzahl der Datenelemente in zwei Abfragen einer Transaktion ist inkonsistent. Beispielsweise fragt eine Transaktion mehrere Datenzeilen ab, während die andere Abfrage die Transaktion einfügt In der nachfolgenden Abfrage der vorherigen Transaktion werden Sie feststellen, dass mehrere Datenspalten vorhanden sind, die zuvor nicht vorhanden waren.

Das obige ist der detaillierte Inhalt vonWas sind die Isolationsstufen von MySQL?. 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
Vorheriger Artikel:Was bedeutet MySQL-Deadlock?Nächster Artikel:Was bedeutet MySQL-Deadlock?