Repeatable Read
Repeatable read evita las lecturas sucias y las lecturas no repetibles: múltiples lecturas de la misma fila dentro de una transacción devuelven resultados idénticos, pero las lecturas fantasma siguen siendo posibles.
Propósito
Ofrecer una consistencia más fuerte que read committed, garantizando lecturas estables dentro de una transacción.
Mecanismo
En la primera lectura, la transacción bloquea la fila o fija una versión de snapshot; lecturas posteriores de la misma fila devuelven el mismo valor. Pero las consultas de rango pueden devolver más filas si otras transacciones insertan (lecturas fantasma). MySQL InnoDB evita fantasmas mediante next-key locks.
Casos de uso
- Lecturas consistentes dentro de transacciones
- Selección del nivel de aislamiento
- Análisis de lecturas fantasma