yo probamos este con MySQL Server 5.5:MySQL lectura repetible y perdió actualización/fantasma lee
1) aseguró que el nivel de aislamiento de transacción es REPEATABLE_READ
2) comenzó shell-1, comenzó una transacción en el mismo, entonces leer un valor a través seleccione
3) comenzó shell-2, comenzó una transacción en él, entonces leer el mismo valor a través de selección
4) en shell-1, actualizado el valor de valorar + 1 y comprometido
5) en shell-2, actualizado el valor de valorar + 1 y comprometido
El valor perdió una de sus actualizaciones y se incrementó solamente por 1.
Ahora, como lo entiendo, usos RR bloqueos de lectura compartidos y bloqueos de escritura exclusivos, lo que significa que en los números 4 y 5 anteriores, las transacciones deberían haberse bloqueado, pero eso no sucedió.
Entonces mi comprensión de RR es incorrecta o MySQL implementa RR de una manera diferente. ¿Así que qué es lo?
EDITAR: a través de un experimento similar, también confirma que una transacción RR (t1) no ve filas insertadas en la misma tabla por otra transacción RR (t2), si hace otra selección en esa tabla incluso después de que t2 y antes de cometer t1. (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 ocupa de las lecturas fantasmas?
¿Ha intentado transacciones serializables? http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html#isolevel_serializable – biziclop
Sí, y parece que MySQL serializable usa bloqueos de lectura compartidos y bloqueos de escritura exclusivos, y por lo tanto da un punto muerto en el arriba caso. Así que estoy realmente confundido, porque esto es lo que dice el libro 'JP with Hibernate': "Un sistema que funciona en modo de aislamiento de lectura repetible no permite lecturas irrepetibles ni lecturas sucias. Lecturas fantasmas pueden ocurrir. Leer transacciones transacciones de escritura en bloque (pero no otras transacciones de lectura) y las transacciones de escritura bloquean todas las demás transacciones ". (página 456) – shrini1000