Lecturas repetibles de MySQL y actualizaciones perdidas / lecturas fantasmas

Intenté esto con MySQL Server 5.5:

1) aseguró que el nivel de aislamiento de la transacción sea repeatable_read

2) inició shell-1, inició una transacción en él, luego leyó un valor a través de seleccionar

3) inició shell-2, inició una transacción en él, luego leyó el mismo valor a través de seleccionar

4) en shell-1, actualizó el valor a valor + 1 y confirmó

5) en shell-2, actualizó el valor a valor + 1 y confirmó

El valor perdió una de sus actualizaciones y se incrementó solo en 1.

Ahora, como lo entiendo, RR usa bloqueos de lectura compartidos y bloqueos de escritura exclusivos, lo que significa que en los puntos 4 y 5 anteriores, las transacciones deberían estar bloqueadas, pero eso no sucedió.

Por lo tanto, mi comprensión de RR es errónea o MySQL implementa RR de una manera diferente. ¿Así que qué es lo?

EDITAR: a través de un experimento similar, también confirmó que una transacción RR (t1) no ve filas insertadas en la misma tabla por otra transacción RR (t2), si realiza otra selección en esa tabla incluso después de que t2 se haya confirmado y antes de que t1 se confirme . (Aquí está el enlace a este experimento:http://www.databasejournal.com/features/mysql/article.php/3393161/MySQL-Transactions-Part-II---Transaction-Isolation-Levels.htm)

¿Significa que el RR de MySQL también se encarga de las lecturas fantasmas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta