Die vier Ebenen der Datenbankisolation sind: 1. Nicht festgeschriebene Inhalte lesen 3. Wiederlesbar; Isolationsstufen werden mithilfe verschiedener Sperrtypen implementiert. Wenn dieselben Daten gelesen werden, kann es zu Problemen wie Dirty Reads und Phantom Reads kommen.
Die Betriebsumgebung dieses Artikels: Windows 7-System, Dell G3-Computer, MySQL8.
Die vier Stufen der Datenbankisolation sind:
Read Uncommitted (Lesen von nicht festgeschriebenen Inhalten)
In dieser Isolationsstufe Alle Transaktionen können 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 Dirty Read genannt.
Read Committed
Dies ist die Standardisolationsstufe für die meisten Datenbanksysteme (aber nicht die MySQL-Standardeinstellung). Es erfüllt die einfache 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.
Wiederholbares Lesen (wiederholbar)
Dies ist die Standard-Transaktionsisolationsstufe von MySQL. Sie stellt sicher, dass mehrere Instanzen derselben Transaktion gleichzeitig Daten lesen Datenzeile. Theoretisch führt dies jedoch zu einem weiteren heiklen Problem: Phantom Read (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).
Serialisierbar
Dies ist die höchste Isolationsstufe, indem sie die Anordnung von Transaktionen erzwingt, sodass sie nicht miteinander in Konflikt geraten können. Kurz gesagt, es fügt jeder gelesenen Datenzeile eine gemeinsame Sperre hinzu. Auf dieser Ebene kann es zu zahlreichen Zeitüberschreitungen und Sperrkonflikten kommen.
Probleme, die durch Isolationsstufen verursacht werden
Diese vier Isolationsstufen werden mithilfe unterschiedlicher Sperrtypen implementiert. Wenn dieselben Daten gelesen werden, kann es leicht zu Fragen kommen. Zum Beispiel:
Dirty Read:
Eine Transaktion hat ein Datenelement aktualisiert, und eine andere Transaktion hat zu diesem Zeitpunkt dasselbe Datenelement gelesen, weil Für einige Aus diesem Grund sind die von der nachfolgenden Transaktion gelesenen Daten falsch, wenn der vorherige RollBack-Vorgang ausgeführt wird.
Nicht wiederholbares Lesen:
Die Daten sind zwischen zwei Abfragen in einer Transaktion inkonsistent. Dies kann auf eine Einfügung zwischen den beiden Abfragen zurückzuführen sein Daten.
Phantom Read:
Die Anzahl der Datenelemente in zwei Abfragen einer Transaktion ist inkonsistent. Beispielsweise fragt eine Transaktion mehrere Datenzeilen ab, aber eine andere Transaktion Zu diesem Zeitpunkt wurden mehrere neue Datenspalten eingefügt. Bei der nachfolgenden Abfrage der vorherigen Transaktion wurde festgestellt, dass mehrere Datenspalten vorhanden waren, die zuvor nicht vorhanden waren.
In MySQL sind diese vier Isolationsstufen implementiert und es können folgende Probleme auftreten:
隔离级别 | 脏读 | 不可重复读 |
幻读 |
读未提交 | √ | √ | √ |
读已提交 | X | √ | √ |
可重复读 | X | X | √ |
可串行化 | X | X | X |
Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er wird für alle hilfreich sein
[Empfohlene Kurse: MySQL-Tutorial]
Das obige ist der detaillierte Inhalt vonWas sind die vier Ebenen der Datenbankisolation?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!