Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Co może spowodować, że mysql db read zwraca nieaktualne dane?

Wygląda na to, że Twoi klienci żyją we własnych migawkach bazy danych, co byłoby prawdziwe, gdyby mieli otwartą transakcję przy użyciu poziomu izolacji REPEATABLE-READ. Innymi słowy, żadne dane zatwierdzone po rozpoczęciu transakcji przez tego klienta nie będą widoczne dla tego klienta.

Jednym z obejść jest wymuszenie rozpoczęcia nowej transakcji. Po prostu uruchom COMMIT w sesji klienta, w której wydaje się, że wyświetla nieaktualne dane. To rozwiąże każdą otwartą transakcję, a następne zapytanie rozpocznie nową transakcję.

Innym sposobem testowania jest użycie odczytu blokującego zapytanie takie jak SELECT ... FOR UPDATE . Spowoduje to odczytanie ostatnio zatwierdzonych danych, niezależnie od poziomu izolacji transakcji klienta. Oznacza to, że nawet jeśli klient rozpoczął transakcję za pomocą REPEATABLE-READ, odczyt blokujący zachowuje się tak, jakby rozpoczął transakcję za pomocą READ-COMMITTED.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obsługa pełnotekstowych znaków specjalnych MySQL

  2. Ustaw zmienną z SELECT PHP

  3. tłumaczenie mysql_fetch_array na PDO::FETCH_NUM

  4. DbUpdateConcurrencyException przy użyciu Entity Framework 6 z MySql

  5. Utrzymuj otwarte połączenie mysql