Heim  >  Artikel  >  Datenbank  >  Was ist Dirty Reading?

Was ist Dirty Reading?

Guanhui
GuanhuiOriginal
2020-06-01 16:12:256761Durchsuche

Was ist Dirty Reading?

Was ist eine Dirty Read?

Dirty Reading, auch als Lesen ungültiger Daten bekannt, bedeutet, dass Transaktion T1 während des Datenbankzugriffs einen bestimmten Wert ändert, dann Transaktion T2 den Wert liest und T1 die Änderung dann für einige abbricht Grund Die Änderung dieses Werts führt dazu, dass die von T2 gelesenen Daten ungültig sind. Es ist zu beachten, dass schmutziges Lesen im Allgemeinen auf Aktualisierungsvorgänge abzielt.

Lösung

MySQL-Datenbank definiert vier Isolationsstufen:

  • serialisierbar: kann Vermeiden Sie Dirty Reads, nicht wiederholbare Lesevorgänge und virtuelle Lesevorgänge.

  • Wiederholbares Lesen: Kann schmutzige Lesevorgänge und nicht wiederholbare Lesevorgänge vermeiden.

  • read commited: Dirty Reads können vermieden werden.

  • unverbindlich lesen: Auf der untersten Ebene wird es passieren.

Hinweis: Die Isolationsstufe einer Transaktion wird durch die Datenbank eingeschränkt und die von verschiedenen Datenbanken unterstützten Isolationsstufen sind nicht unbedingt dieselben

Dirty Read: Beim Hinzufügen einer exklusiven Sperre wird diese erst freigegeben, wenn die Transaktion festgeschrieben wird. Nach dem Hinzufügen einer gemeinsamen Sperre beim Lesen (damit andere Transaktionen die Daten nicht ändern, während Transaktion 1 die Daten liest) erfolgt keine Transaktion Die Daten können nur gelesen werden, wenn später ein Aktualisierungsvorgang durchgeführt wird, und andere Transaktionen haben kein Recht, am Lesen und Schreiben teilzunehmen Leseprobleme

Aber wenn Transaktion 1 die Daten liest, ist es möglich, dass andere Transaktionen die Daten ebenfalls gelesen haben. Nach Abschluss des Lesevorgangs wird die gemeinsame Sperre aufgehoben. Zu diesem Zeitpunkt ändert Transaktion 1 die Daten Wenn andere Transaktionen die Daten erneut lesen und feststellen, dass sie inkonsistent sind, treten nicht wiederholbare Leseprobleme auf, sodass nicht wiederholbare Leseprobleme nicht vermieden werden können.

Bei der Ausführung Bei unterschiedlichen Isolationsstufen können unterschiedliche Probleme auftreten. Im Folgenden werden sie zusammengefasst und anhand von Beispielen veranschaulicht:

Dirty Read tritt auf, wenn eine Transaktion A Daten liest, die von einer anderen Transaktion B geändert, aber noch nicht festgeschrieben wurden. Wenn B ein Rollback durchführt, liest Transaktion A ungültige Daten. Dies ähnelt einem nicht wiederholbaren Lesevorgang, die zweite Transaktion muss jedoch nicht festgeschrieben werden.


Empfohlene Tutorials: „PHP-Tutorial“ „MySQL-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist Dirty Reading?. 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