Heim  >  Artikel  >  Datenbank  >  Was ist der Unterschied zwischen nicht wiederholbaren Lesevorgängen und Phantom-Lesevorgängen?

Was ist der Unterschied zwischen nicht wiederholbaren Lesevorgängen und Phantom-Lesevorgängen?

青灯夜游
青灯夜游Original
2021-04-21 17:40:5226445Durchsuche

Unterschied: Der Schwerpunkt des nicht wiederholbaren Lesens liegt auf der Änderung unter denselben Bedingungen. Die beim ersten und zweiten Mal gelesenen Werte sind 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. Aus Sicht der Kontrolle müssen beim nicht wiederholbaren Lesen nur Datensätze gesperrt werden, die die Bedingungen erfüllen, während beim Phantomlesen Datensätze gesperrt werden müssen, die die Bedingungen erfüllen, und ähnliche Datensätze.

Was ist der Unterschied zwischen nicht wiederholbaren Lesevorgängen und Phantom-Lesevorgängen?

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

Verfeinerte Erklärung:

Der entscheidende Punkt beim nicht wiederholbaren Lesen ist die Änderung:

Unter denselben Bedingungen und den von Ihnen gelesenen Daten werden Sie beim erneuten Lesen feststellen, dass der Wert unterschiedlich ist

Der entscheidende Punkt beim Phantomlesen Es kommt auf das Hinzufügen oder Löschen an

Unter den gleichen Bedingungen ist die Anzahl der zum ersten und zweiten Mal ausgelesenen Datensätze unterschiedlich

Natürlich sieht es aus den Gesamtergebnissen so aus Die Ergebnisse der beiden Lesevorgänge sind inkonsistent.

Aber wenn man es aus Kontrollsicht betrachtet, ist der Unterschied zwischen den beiden ziemlich groß.

  • Bei ersterem müssen Sie nur die Datensätze sperren, die übereinstimmen die Bedingungen

  • Für letzteres müssen Sie die Datensätze sperren, die die Bedingungen erfüllen, und ihre ähnlichen Datensätze

Detaillierte Beschreibung:

1) „Nicht wiederholbares Lesen“ bezieht sich auf das Lesen desselben Daten mehrmals innerhalb einer Transaktion. Bevor diese Transaktion endet, greift auch eine andere Transaktion auf dieselben Daten zu. Dann können zwischen den beiden Lesevorgängen der Daten 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 lesen können, nachdem der Autor mit dem Schreiben fertig ist. Um diese Situation zu vermeiden, können Sie normalerweise die Isolationsstufe festlegen, sodass Transaktion A zweimal gelesen wird Daten aus Tabelle T abrufen. Wenn Transaktion B versucht, die Daten in Tabelle T zu ändern (zu den Details gehört das Lesen von Daten durch Transaktion A), wird dies blockiert, bis Transaktion A festgeschrieben wird! Dadurch wird die Konsistenz der von Transaktion A zweimal gelesenen Daten sichergestellt.

2) Phantom-Lesen 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.

Verwandte kostenlose Lernempfehlungen:

MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen nicht wiederholbaren Lesevorgängen und Phantom-Lesevorgängen?. 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