¿Puede explicar qué se entiende por el fenómeno de la lectura fantasma en el contexto de las transacciones?
sobes.tech AI
Respuesta de la IA
El fenómeno de la lectura fantasma surge en el contexto de transacciones de bases de datos, cuando en una misma transacción una consulta repetida a los datos devuelve resultados diferentes debido a que otra transacción ha añadido o eliminado filas que cumplen con la condición de selección.
Por ejemplo, si en la primera parte de la transacción seleccionamos todos los registros con una condición determinada, y luego en la segunda parte repetimos la misma consulta, pueden aparecer nuevas filas (fantasmas) que no estaban visibles en la primera lectura debido a cambios paralelos en la base.
Esto está relacionado con el nivel de aislamiento de las transacciones: la lectura fantasma es posible en el nivel READ COMMITTED, pero se previene en el nivel SERIALIZABLE.
Ejemplo:
-- Transacción 1
BEGIN;
SELECT * FROM orders WHERE status = 'pending'; -- devolvió 5 registros
-- La transacción 2 añade en paralelo un nuevo registro con status = 'pending'
SELECT * FROM orders WHERE status = 'pending'; -- ahora devolverá 6 registros
COMMIT;