MySQL wiederholbares Lesen und verlorene Update- / Phantom-Lesevorgänge

Ich habe das mit MySQL Server 5.5 versucht:

1) Sicherstellen, dass die Transaktionsisolationsstufe "repeatable_read" ist

2) Starten Sie Shell-1, starten Sie eine Transaktion darin und lesen Sie dann einen Wert durch Auswahl

3) Starten Sie Shell-2, starten Sie eine Transaktion darin und lesen Sie dann denselben Wert über Select

4) In Shell-1 den Wert auf Wert + 1 aktualisiert und festgeschrieben

5) In Shell-2 den Wert auf Wert + 1 aktualisiert und festgeschrieben

Der Wert hat eines seiner Updates verloren und wurde nur um 1 erhöht.

Nun, so wie ich es verstehe, verwendet RR gemeinsame Lesesperren und exklusive Schreibsperren, was bedeutet, dass die Transaktionen in # 4 und # 5 oben totgesperrt sein sollten, aber das ist nicht geschehen.

Entweder ist mein Verständnis von RR fehlerhaft oder MySQL implementiert RR auf eine andere Art und Weise. Also, was ist es?

BEARBEITEN: Durch ein ähnliches Experiment wurde auch bestätigt, dass eine RR-Transaktion (t1) keine Zeilen sieht, die von einer anderen RR-Transaktion (t2) in dieselbe Tabelle eingefügt wurden, wenn eine andere Auswahl für diese Tabelle durchgeführt wird, selbst nachdem t2 festgeschrieben wurde und bevor t1 festgeschrieben wurde . (Hier ist der Link zu diesem Experiment:http://www.databasejournal.com/features/mysql/article.php/3393161/MySQL-Transactions-Part-II---Transaction-Isolation-Levels.htm)

Bedeutet das, dass die RR von MySQL auch Phantom Reads übernimmt?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage