Heim  >  Artikel  >  Datenbank  >  Was ist der Unterschied zwischen Dirty Read, Phantom Read und Non-Repeatable Read?

Was ist der Unterschied zwischen Dirty Read, Phantom Read und Non-Repeatable Read?

coldplay.xixi
coldplay.xixiOriginal
2020-09-02 13:41:1455177Durchsuche

Der Unterschied zwischen Dirty Read, Phantom Read und nicht wiederholbarem Lesevorgang: 1. Dirty Read bedeutet, dass eine Transaktion auf Daten zugreift und die Daten geändert werden. 2. Nicht wiederholbarer Lesevorgang bedeutet, dass innerhalb einer Transaktion derselbe Lesevorgang gelesen wird mehrfach Daten; 3. Phantomlesung bezieht sich auf ein Phänomen, das auftritt, wenn Transaktionen nicht unabhängig ausgeführt werden.

Was ist der Unterschied zwischen Dirty Read, Phantom Read und Non-Repeatable Read?

【Verwandte Lernempfehlungen: MySQL-Tutorial

Der Unterschied zwischen Dirty Reading, Phantom Reading und nicht wiederholbarem Lesen:

1. Dirty Reading: D irty Lektüre bedeutet, dass eine Transaktion auf Daten zugreift und die Daten geändert hat, diese Änderung jedoch noch nicht in die Datenbank übernommen wurde. Zu diesem Zeitpunkt greift auch eine andere Transaktion auf die Daten zu und verwendet sie dann.

2. Nicht wiederholbares Lesen: bezieht sich auf das mehrmalige Lesen derselben Daten innerhalb einer Transaktion. Bevor diese Transaktion endet, greift auch eine andere Transaktion auf dieselben Daten zu. Dann können zwischen den beiden Datenlesevorgängen in der ersten Transaktion aufgrund der Änderung der zweiten Transaktion die von der ersten Transaktion zweimal gelesenen Daten unterschiedlich sein. Auf diese Weise sind die innerhalb einer Transaktion zweimal gelesenen Daten unterschiedlich und werden daher als nicht wiederholbares Lesen bezeichnet. Beispielsweise liest ein Redakteur dasselbe Dokument zweimal, aber zwischen den Lesevorgängen schreibt der Autor das Dokument neu. Wenn der Redakteur das Dokument ein zweites Mal liest, hat sich das Dokument geändert. Rohlesevorgänge sind nicht wiederholbar. Dieses Problem kann vermieden werden, wenn Redakteure das Dokument erst dann lesen können, wenn der Autor mit dem Schreiben fertig ist.

3. Phantomlesung: bezieht sich auf ein Phänomen, das auftritt, wenn Transaktionen nicht unabhängig voneinander ausgeführt werden. Beispielsweise ändert die erste Transaktion die Daten in einer Tabelle und diese Änderung betrifft alle Datenzeilen in der Tabelle. Gleichzeitig werden durch die zweite Transaktion auch die Daten in dieser Tabelle geändert. Durch diese Änderung wird eine Zeile mit neuen Daten in die Tabelle eingefügt. Dann wird der Benutzer, der die erste Transaktion ausführt, in Zukunft feststellen, dass die Tabelle immer noch unveränderte Datenzeilen enthält, als ob eine Halluzination aufgetreten wäre. Beispielsweise ändert ein Redakteur ein von einem Autor eingereichtes Dokument, aber wenn die Produktion seine Änderungen in die Masterkopie des Dokuments einfügt, stellt sich heraus, dass der Autor dem Dokument neues, unbearbeitetes Material hinzugefügt hat. Dieses Problem kann vermieden werden, wenn niemand neues Material zum Dokument hinzufügen kann, bis die Redakteure und die Produktionsabteilung die Arbeit am Originaldokument abgeschlossen haben.

Ergänzung: Deklarative Frühlingstransaktionen basierend auf Metadaten:

Das Isolationsattribut unterstützt insgesamt fünf Transaktionseinstellungen. Die Details lauten wie folgt:

  • DEFAULT verwendet die von der Datenbank festgelegte Isolationsstufe (Standard), die von festgelegt wird DBA-Standard Zur Bestimmung der Isolationsstufe.

  • READ_UNCOMMITTED führt zu Dirty Reads, nicht wiederholbaren Lesevorgängen und Phantom-Lesevorgängen (niedrigste Isolationsstufe, hohe Parallelitätsleistung).

  • READ_COMMITTED führt zu nicht wiederholbaren Lesevorgängen und Phantom-Lesevorgängen (Sperren der gelesenen Zeilen)

  • REPEATABLE_READ führt zu Phantomlesungen (Sperren aller gelesenen Zeilen)

  • SERIALIZABLE garantiert, dass nicht alle Situationen auftreten (Tabelle sperren)

Der Fokus von Nicht wiederholbares Lesen ist eine Änderung:

In derselben Transaktion sind die zweimal gelesenen Daten unterschiedlich.

Der Schwerpunkt des Phantomlesens liegt auf dem Hinzufügen oder Löschen.

Unter den gleichen Bedingungen ist die Anzahl der beim ersten und zweiten Mal ausgelesenen Datensätze unterschiedlich nicht neu genug angekommen.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Dirty Read, Phantom Read und Non-Repeatable Read?. 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