sql >> Databasteknik >  >> RDS >> Mysql

Vad kan orsaka att mysql db read returnerar inaktuella data

Det låter som att dina kunder lever i sin egen ögonblicksbild av databasen, vilket skulle vara sant om de har en öppen transaktion med isoleringsnivån REPEATABLE-READ. Med andra ord, ingen data som begåtts efter att kunden startade sin transaktion kommer att vara synlig för den kunden.

En lösning är att tvinga en ny transaktion att starta. Kör bara COMMIT i klientsessionen där den ser ut att se inaktuella data. Det kommer att lösa alla öppna transaktioner och nästa fråga startar en ny transaktion.

Ett annat sätt du kan testa är att använda en låsningsläsning fråga såsom SELECT ... FOR UPDATE . Detta läser de senast bekräftade data, oavsett klientens transaktionsisoleringsnivå. Det vill säga, även om klienten hade startat sin transaktion med REPEATABLE-READ, fungerar en låsande läsning som om de hade startat sin transaktion med READ-COMMITTED.




  1. SQL-fråga för att hitta saknade rader mellan två relaterade tabeller

  2. Binära data i MySQL

  3. mysql - returnera första kolumnen en gång och alla motsvarande kolumndata

  4. MySQL Query Performance Tuning