sql >> Databáze >  >> RDS >> Mysql

Co by mohlo způsobit, že čtení mysql db vrátí zastaralá data

Zdá se, že vaši klienti žijí ve svém vlastním snímku databáze, což by byla pravda, pokud by měli otevřenou transakci využívající úroveň izolace REPEATABLE-READ. Jinými slovy, žádná data potvrzená poté, co klient zahájil svou transakci, nebudou pro tohoto klienta viditelná.

Jedním z řešení je vynutit spuštění nové transakce. Stačí spustit COMMIT v relaci klienta, kde se zdá, že zobrazuje zastaralá data. Tím se vyřeší všechny otevřené transakce a další dotaz zahájí novou transakci.

Dalším způsobem, jak můžete otestovat, je použít zamykací čtení dotaz jako například SELECT ... FOR UPDATE . Tím se přečtou poslední potvrzená data bez ohledu na úroveň izolace transakcí klienta. To znamená, že i když klient zahájil transakci pomocí REPEATABLE-READ, zamykací čtení se chová, jako kdyby svou transakci zahájil s REPEATABLE-READ.




  1. Statické a dynamické maskování dat v FieldShield

  2. Po instalaci se nelze připojit k serveru MySQL na 'localhost' (10061).

  3. Vytvoření odkazu z položky časové osy Google Chart

  4. Golang Vložte NULL do sql místo prázdného řetězce