sql >> Base de Datos >  >> RDS >> Mysql

¿Qué podría causar que mysql db read devuelva datos obsoletos?

Parece que sus clientes están viviendo en su propia instantánea de la base de datos, lo cual sería cierto si tienen una transacción abierta usando el nivel de aislamiento de LECTURA REPETIBLE. En otras palabras, ningún dato comprometido después de que ese cliente haya iniciado su transacción será visible para ese cliente.

Una solución consiste en forzar el inicio de una nueva transacción. Simplemente ejecute COMMIT en la sesión del cliente donde parece estar viendo datos obsoletos. Eso resolverá cualquier transacción abierta y la siguiente consulta iniciará una nueva transacción.

Otra forma de probar es usar una lectura de bloqueo consulta como SELECT ... FOR UPDATE . Esto leerá los datos confirmados más recientemente, independientemente del nivel de aislamiento de transacciones del cliente. Es decir, incluso si el cliente hubiera iniciado su transacción con REPEATABLE-READ, una lectura de bloqueo se comporta como si hubiera iniciado su transacción con READ-COMMITTED.