Myślę, że oczekiwane zachowanie jest trochę nie tak. Przed zatwierdzeniem db_slow wszystkie wiersze w tabeli są zablokowane. Po zatwierdzeniu są dwa wiersze. db_fast jest odblokowywany po zatwierdzeniu db_slow. Dlatego zachowanie jest następujące:
- db_slow:wybierz wiersz 1 i zablokuj go
- db_slow:zobacz, że to tylko 1 wiersz i poczekaj
- db_fast:spróbuj wybrać wiersz 1, sprawdź, czy jest zablokowany, poczekaj
- db_slow:wstaw wiersz z „2”
- db_slow:zatwierdź
- db_fast:odblokowany i odczytuje 2 wiersze
- db_fast:nic nie robi
- Koniec z foo:1, 2