Heim  >  Artikel  >  Datenbank  >  Vier Isolationsstufen in MySQL-Transaktionen

Vier Isolationsstufen in MySQL-Transaktionen

Guanhui
Guanhuinach vorne
2020-05-01 11:41:102193Durchsuche

1. Vier Hauptmerkmale von Transaktionen

Atomizität: Nach dem Start der Transaktion sind alle Vorgänge entweder abgeschlossen oder nicht abgeschlossen, und es ist unmöglich, in der Mitte zu stagnieren. Wenn während der Transaktionsausführung ein Fehler auftritt, wird die Transaktion auf den Zustand vor Beginn der Transaktion zurückgesetzt und alle Vorgänge werden so ausgeführt, als ob sie nicht stattgefunden hätten.

Konsistenz: Die Integritätsbeschränkungen der Datenbank werden vor und nach Beginn der Transaktion nicht verletzt.

Isolierung: Nur eine Transaktion darf gleichzeitig dieselben Daten anfordern, und verschiedene Transaktionen stören sich nicht gegenseitig.

Dauerhaftigkeit: Nach Abschluss der Transaktion werden alle Aktualisierungen der Datenbank durch die Transaktion in der Datenbank gespeichert und können nicht zurückgesetzt werden.

2. Probleme mit der Parallelität von Transaktionen

Dirty Read: Transaktion A liest die von Transaktion B aktualisierten Daten, und dann macht B den Vorgang rückgängig, dann liest A die Daten schmutzige Daten

Nicht wiederholbares Lesen: (Transaktion A liest dieselben Daten mehrmals, und Transaktion B aktualisiert und schreibt die Daten während der mehrfachen Lesevorgänge von Transaktion A fest, was dazu führt, dass Transaktion A mehrmals liest. Beim Lesen der Gleiche Daten, die Ergebnisse sind inkonsistent. ) (Wichtiger Punkt: Datenänderung)

Phantomlesung: Systemadministrator A hat die Noten aller Schüler in der Datenbank von bestimmten Ergebnissen in ABCDE-Noten geändert, aber Systemadministrator B hat At geändert Diesmal wurde ein Datensatz mit einer bestimmten Punktzahl eingefügt. Als der Systemadministrator A die Änderung abschloss, stellte er fest, dass noch ein Datensatz vorhanden war, der nicht geändert wurde. Dies wird als Phantomlesung bezeichnet. (Hauptpunkt: Hinzufügen oder Löschen von Daten)

Zusammenfassung: Nicht wiederholbares Lesen und Phantomlesen werden leicht verwechselt. Nicht wiederholbares Lesen konzentriert sich auf Änderungen, und Phantomlesen konzentriert sich auf Hinzufügen oder Löschen. Um das Problem des nicht wiederholbaren Lesens zu lösen, müssen Sie nur die Zeilen sperren, die die Bedingungen erfüllen. Um das Problem des Phantomlesens zu lösen, müssen Sie die MySQL-Transaktionsisolation sperren Ebene

Nicht festgeschriebenes Lesen (READ UNCOMMITED) (Nicht festgeschriebene Daten können gelesen werden, Dirty Read, diese Daten werden Dirty Data genannt)

READ COMMITED (Festgeschriebene Daten können gelesen werden, nicht festgeschriebene Daten) wiederholbares Lesen)

Wiederholbares Lesen (RePEATABLE READ) Die während der Ausführung einer Transaktion angezeigten Daten stimmen immer mit den Daten überein, die beim Start der Transaktion angezeigt werden. Natürlich sind unter der wiederholbaren Leseisolationsstufe nicht festgeschriebene Änderungen auch für andere Transaktionen unsichtbar.

SERIALISIERBAR (Lesevorgänge erwerben implizit gemeinsame Sperren, wodurch ein gegenseitiger Ausschluss zwischen verschiedenen Transaktionen sichergestellt werden kann. Sperrtabelle. Denken Sie nicht darüber nach. Die Mängel liegen auch auf der Hand. Sehen Sie sich die Sperrtabelle an. Sie werden verstehen, Effizienz Probleme)

Empfohlenes Tutorial: „

Mysql Tutorial

Das obige ist der detaillierte Inhalt vonVier Isolationsstufen in MySQL-Transaktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen