Leitura repetida do MySQL e leitura de atualização / fantasma perdida

Eu tentei isso com o MySQL Server 5.5:

1) garantiu que o nível de isolamento da transação seja repeatable_read

2) iniciou o shell-1, iniciou uma transação nele e leu um valor por meio de

3) iniciou o shell-2, iniciou uma transação nele e, em seguida, leu o mesmo valor através de select

4) no shell-1, atualizou o valor para valor + 1 e confirmou

5) no shell-2, atualizou o valor para valor + 1 e confirmou

O valor perdeu uma de suas atualizações e foi incrementado apenas por 1.

Agora, como eu o entendo, o RR usa bloqueios de leitura compartilhados e bloqueios de gravação exclusivos, o que significa que, nos números 4 e 5 acima, as transações devem ter dead-locked, mas isso não aconteceu.

Então, meu entendimento do RR está com defeito, ou o MySQL implementa o RR de uma maneira diferente. Então o que é?

EDIT: através de uma experiência semelhante, também confirmou que uma transação RR (t1) não vê linhas inseridas na mesma tabela por outra transação RR (t2), se fizer outra seleção nessa tabela mesmo depois de t2 ter confirmado e antes de t1 confirmar . (Aqui está o link para esta experiência:http://www.databasejournal.com/features/mysql/article.php/3393161/MySQL-Transactions-Part-II---Transaction-Isolation-Levels.htm)

Isso significa que o RR do MySQL cuida de leituras fantasmas também?

questionAnswers(1)

yourAnswerToTheQuestion