sql >> Database >  >> RDS >> Mysql

Wat kan ertoe leiden dat mysql db read verouderde gegevens retourneert?

Het klinkt alsof uw klanten in hun eigen momentopname van de database leven, wat waar zou zijn als ze een open transactie hebben met het REPEATABLE-READ isolatieniveau. Met andere woorden, er zijn geen gegevens die zijn vastgelegd nadat die klant zijn transactie startte, zichtbaar voor die klant.

Een tijdelijke oplossing is om een ​​nieuwe transactie te forceren. Voer gewoon COMMIT uit in de clientsessie waar het lijkt alsof hij verouderde gegevens bekijkt. Dat zal elke openstaande transactie oplossen en de volgende vraag zal een nieuwe transactie starten.

Een andere manier om te testen is door een locking read te gebruiken vraag zoals SELECT ... FOR UPDATE . Hiermee worden de meest recent vastgelegde gegevens gelezen, ongeacht het transactie-isolatieniveau van de klant. Dat wil zeggen, zelfs als de klant zijn transactie was begonnen met REPEATABLE-READ, gedraagt ​​een locking read zich alsof hij zijn transactie was begonnen met READ-COMMITTED.




  1. Omgaan met tijden en na middernacht

  2. ListView Van Sqlite in Android

  3. Java-ondersteuning voor persistentie begrijpen met JPA

  4. Installeer MariaDB op een Mac