Unterschiede und Vorsichtsmaßnahmen zwischen MySQL Dirty Read, Non-repeatable Read und Phantom Read

1. Einleitung

Die Architektur von MySQL ist eine C/S-Architektur (also eine Client/Server-Architektur). Mit einem Server können mehrere Clients verbunden sein. Jede Verbindung wird als Sitzung bezeichnet , und der entsprechende Client kann in der entsprechenden Sitzung verbunden werden . Senden Sie eine Anforderungsanweisung an den Server (dh führen Sie eine Transaktion aus), und ein Client führt entsprechend eine Transaktion aus, sodass der Server mehrere Transaktionen gleichzeitig verarbeiten kann.

2. Probleme bei der gleichzeitigen Ausführung von Transaktionen

Wenn Transaktionen gleichzeitig ausgeführt werden, können Probleme wie Dirty Writes, Dirty Reads, nicht wiederholbare Lesevorgänge und Phantom Reads auftreten. Sie sind nach Schweregrad geordnet: Dirty Write > Dirty Read > Non-Repeatable Read > Phantom Read.

  • Schmutziges Schreiben: Zwei Transaktionen schreiben Daten gleichzeitig an derselben Stelle , und es kommt zu einer Datenüberschreibung , was zu Dateninkonsistenzen führt. (das heißt, eine Transaktion ändert Daten, die nicht von einer anderen Transaktion festgeschrieben wurden). Schmutziges Schreiben ist der schlimmste Fall, der in der Datenbank nicht zulässig ist und daher direkt durch Sperren gelöst wird. Die später erwähnten Isolationsstufen gelten alle für Lesevorgänge .

1. Unterschied

Zu den Fehlern bei MySQL-Lesevorgängen gehören: Dirty Reads, Phantom Reads und nicht wiederholbare Lesevorgänge. Sie werden durch unterschiedliche MySQL-Isolationsstufen verursacht. Je niedriger die Isolationsstufe, desto schwerwiegender können die Fehler sein.

  • Dirty Read: Eine Transaktion liest nicht festgeschriebene Daten einer anderen Transaktion .
  • Nicht wiederholbares Lesen: Transaktion A liest die Daten mehrmals an derselben Stelle , erhält jedoch unterschiedliche Ergebnisse .
  • Phantomlesung: Transaktion A liest Daten mehrmals an derselben Stelle und stellt fest, dass n Daten hinzugefügt wurden oder fehlen. Dieser Hinzufügungs- und Löschvorgang wird jedoch nicht von Transaktion A selbst, sondern von anderen Transaktionen durchgeführt .

2. Achtung

Dirty Reads, nicht wiederholbare Lesevorgänge und Phantom Reads sind alles Probleme, die bei der gleichzeitigen Ausführung von Transaktionen auftreten können. Bei Transaktion A sind die von ihr ausgeführten Hinzufügungs-, Lösch- und Änderungsvorgänge für sich selbst sichtbar und werden nicht als solche gezählt Dirty Reads, nicht wiederholbare Lesevorgänge und Phantom Reads. , da dies kein Szenario für gleichzeitige Transaktionen ist .


3. Isolationsstufe

Der Grund für die Existenz von Isolationsstufen liegt in Leistungsgründen. Wenn die Leistung nicht berücksichtigt wird, kann sie direkt vollständig isoliert werden, sodass eine Transaktion vor der Ausführung der nächsten Transaktion ausgeführt wird, sodass die Probleme von schmutzigen Lesevorgängen, nicht wiederholbaren Lesevorgängen und Phantomlesevorgängen definitiv nicht auftreten.

„Man kann nicht gleichzeitig Fisch und Bärentatze haben“, um die Leistung zu verbessern, wird daher ein Teil der Isolation verworfen . Je nach Grad der Abbruchisolation wird sie in vier Isolationsstufen unterteilt: nicht festgeschriebenes Lesen, festgeschriebenes Lesen, wiederholbares Lesen und Serialisierung.

Folgende Lesevorgangsfehler können auf jeder Isolationsebene auftreten:

Bildname

4. Referenzen

„Wie MySQL funktioniert: MySQL von Grund auf verstehen“

Guess you like

Origin blog.csdn.net/e2788666/article/details/131028774