Phantom Read
Una lectura fantasma ocurre cuando la misma transacción ejecuta dos veces la misma consulta por rango y obtiene cantidades distintas de filas (otra transacción insertó/eliminó filas coincidentes); una anomalía que persiste en repeatable read.
Propósito
Comprender las filas fantasma en consultas por rango concurrentes y sus defensas (next-key locks / SSI).
Mecanismo
La transacción A ejecuta dos veces SELECT WHERE age>20; la transacción B inserta age=25 y confirma en medio, así que la segunda consulta de A devuelve una fila más (un fantasma). Defensas: candados de predicado, next-key locks (MySQL), SSI (PostgreSQL).
Casos de uso
- Análisis de anomalías de concurrencia
- Aislamiento de consultas por rango
- Diseño de estrategias de bloqueo