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

StaleObjectStateException w przypadku aktualizacji o wysokiej częstotliwości

Wygląda na to, że Hibernate został skonfigurowany do używania optymistyczne sterowanie współbieżnością . Oznacza to, że Twoja tabela użytkowników zawiera pole wersji, które Hibernate zwiększa przy każdej aktualizacji wiersza.

Najprawdopodobniej Twoja transakcja rozpoczyna się na początku żądania HTTP, a kończy na końcu odpowiedzi HTTP. Oznacza to, że proces edycji użytkownika składa się z dwóch transakcji:jednej transakcji do wypełnienia formularza internetowego i jednej transakcji do zapisania zmian.

W takim przypadku zmiana poziomu izolacji bazy danych nie przyniesie niczego dobrego. Najprawdopodobniej otrzymasz tylko gorsza wydajność i skalowalność .

Nie jest źle mieć StaleObjectException s. Odzwierciedla rzeczywisty świat – ludzie od czasu do czasu pracują nad tym samym i mogą wystąpić konflikty. Pytanie brzmi, kiedy wykryty zostanie konflikt, jak rozwiązać go w sposób satysfakcjonujący użytkowników końcowych? Czy można go rozwiązać bez pomocy użytkownika?

Możliwe strategie to

  • nadpisz zmiany poprzedniego użytkownika (często nie to, czego chcesz - stąd potrzeba kontroli współbieżności),

  • pokaż komunikat o błędzie, prosząc użytkownika o odświeżenie i ponowne wprowadzenie zmian,

  • automatycznie scalaj zmiany bez nadpisywania zmian wprowadzonych przez poprzedniego użytkownika (czasami jest to możliwe)

  • poinformuj użytkownika o nieaktualności jego danych i zaoferuj mu możliwość ręcznego scalenia jego zmian

Wszystko zależy od kontekstu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Musisz pobrać dane produktu z bazy danych mysql

  2. Dlaczego odwołania do wp_postmeta są tak powolne?

  3. Jak mogę użyć mysqli_fetch_array() dwa razy?

  4. PHP addslashes sql wstrzykiwany nadal ważny?

  5. Jak mogę zsynchronizować dwie tabele MySQL, które mają taką samą strukturę i inny serwer?