Mysql
 sql >> Database >  >> RDS >> Mysql

Cosa potrebbe causare la lettura di mysql db per restituire dati non aggiornati

Sembra che i tuoi clienti vivano nella propria istantanea del database, il che sarebbe vero se avessero una transazione aperta che utilizza il livello di isolamento REPEATABLE-READ. In altre parole, nessun dato sottoposto a commit dopo che il client ha avviato la transazione sarà visibile a quel client.

Una soluzione alternativa è forzare l'avvio di una nuova transazione. Basta eseguire COMMIT nella sessione del client in cui sembra visualizzare dati non aggiornati. Ciò risolverà qualsiasi transazione aperta e la query successiva avvierà una nuova transazione.

Un altro modo per testare è utilizzare una lettura di blocco domanda come SELECT ... FOR UPDATE . Questo leggerà i dati impegnati più di recente, indipendentemente dal livello di isolamento della transazione del cliente. Cioè, anche se il client ha avviato la transazione utilizzando REPEATABLE-READ, una lettura bloccata si comporta come se avesse avviato la transazione con READ-COMMITTED.