Heim >häufiges Problem >Was ist Phantomlesen?

Was ist Phantomlesen?

Guanhui
GuanhuiOriginal
2020-06-11 11:35:509133Durchsuche

Was ist Phantomlesen?

Was ist Phantomlesen?

Phantomlesen bedeutet, dass Transaktion A zuerst N Datenelemente basierend auf dem bedingten Index erhält und dann M Datenelemente außer diesen N Datenelementen ändert oder M Datenelemente hinzufügt erfüllen die Suchbedingungen von Transaktion A. Infolgedessen sucht Transaktion A erneut und findet N+M Datenstücke, was zu Phantomlesevorgängen führt.

Wie löst man das Phantomlesen?

  • Gelöst durch Next-Key-Sperre.

  • Der Grund für das Phantomlesen ist, dass Zeilensperren nur Zeilen sperren können. Beim Einfügen neuer Datensätze muss jedoch die „Lücke“ zwischen Datensätzen aktualisiert werden. Um Phantom-Lesevorgänge zu lösen, führt InnoDB daher Lückensperren ein.

  • Lückensperre Die Lückensperre ist nur auf der wiederholbaren Leseebene wirksam.

  • Die Kombination aus Lückensperre und Zeilensperre wird als Next-Key-Sperre bezeichnet , jede Next-Key-Sperre ist ein offenes und geschlossenes Intervall.

Unter den vier in der Datenbank definierten Isolationsstufen

kann die höchste Isolationsstufe SERIALIZABLE_READ sicherstellen, dass kein Phantomleseproblem auftritt.

Wiederholbarer Lesevorgang (RR)

Für den aktuellen Lesevorgang stellt die RR-Isolationsstufe sicher, dass der gelesene Datensatz gesperrt ist (Datensatzsperre) und der Lesebereich garantiert gesperrt ist . Neue Datensätze, die die Abfragebedingungen erfüllen, können nicht eingefügt werden (Lückensperre), und es gibt kein Phantomlesephänomen.


Empfohlenes Tutorial: „MySQL-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist Phantomlesen?. 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
Vorheriger Artikel:Was ist ein RN-Programmierer?Nächster Artikel:Was ist ein RN-Programmierer?