Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O que pode fazer com que o mysql db read retorne dados obsoletos


Parece que seus clientes estão vivendo em seu próprio instantâneo do banco de dados, o que seria verdade se eles tivessem uma transação aberta usando o nível de isolamento REPEATABLE-READ. Em outras palavras, nenhum dado confirmado após o cliente iniciar sua transação será visível para esse cliente.

Uma solução é forçar o início de uma nova transação. Basta executar COMMIT na sessão do cliente onde parece estar visualizando dados obsoletos. Isso resolverá qualquer transação aberta e a próxima consulta iniciará uma nova transação.

Outra maneira de testar é usar uma leitura de bloqueio consulta como SELECT ... FOR UPDATE . Isso lerá os dados confirmados mais recentemente, independentemente do nível de isolamento da transação do cliente. Ou seja, mesmo que o cliente tenha iniciado sua transação usando REPEATABLE-READ, uma leitura de bloqueio se comporta como se ele tivesse iniciado sua transação com READ-COMMITTED.