Odczyt MySQL i utrata aktualizacji / fantomu

Próbowałem tego z MySQL Server 5.5:

1) zapewnił, że poziom izolacji transakcji jest powtarzalny

2) uruchomiono shell-1, uruchomiono w nim transakcję, a następnie odczytano wartość poprzez select

3) uruchomiono shell-2, uruchomiono w nim transakcję, a następnie odczytano tę samą wartość poprzez select

4) w powłoce-1 zaktualizowano wartość do wartości + 1 i zatwierdzono

5) w powłoce-2 zaktualizowano wartość do wartości + 1 i zatwierdzono

Wartość utraciła jedną ze swoich aktualizacji i została zwiększona tylko o 1.

Teraz, jak rozumiem, RR używa współdzielonych blokad odczytu i wyłącznych blokad zapisu, co oznacza, że ​​w # 4 i # 5 powyżej, transakcje powinny być zablokowane, ale tak się nie stało.

Więc albo moje zrozumienie RR jest wadliwe, albo MySQL implementuje RR w inny sposób. Więc co to jest?

EDYCJA: poprzez podobny eksperyment potwierdził również, że transakcja RR (t1) nie widzi wierszy wstawionych do tej samej tabeli przez inną transakcję RR (t2), jeśli dokona innego wyboru na tej tabeli nawet po zatwierdzeniu t2 i przed zatwierdzeniem t1 . (Oto link do tego eksperymentu:http://www.databasejournal.com/features/mysql/article.php/3393161/MySQL-Transactions-Part-II---Transaction-Isolation-Levels.htm)

Czy to oznacza, że ​​RR MySQL zajmuje się także odczytami fantomowymi?

questionAnswers(1)

yourAnswerToTheQuestion