Mysql
 sql >> база данни >  >> RDS >> Mysql

StaleObjectStateException при високочестотни актуализации

Изглежда, че сте конфигурирали Hibernate да използва оптимистичен контрол на паралелността . Това означава, че вашата таблица с потребители има поле за версия, което Hibernate увеличава при всяка актуализация на ред.

Най-вероятно вашата транзакция започва в началото на HTTP заявката и завършва в края на HTTP отговора. Това означава, че процесът на редактиране на потребител се състои от две транзакции:една транзакция за попълване на уеб формуляра и една транзакция за запазване на промените.

В този случай промяната на нивото на изолация на базата данни няма да има никаква полза. Най-вероятно всичко, което ще получите, е по-лоша производителност и мащабируемост .

Не е лошо да имате StaleObjectException с. Той отразява реалния свят - хората всъщност работят върху едно и също нещо от време на време и могат да възникнат конфликти. Въпросът е, когато бъде открит конфликт, как да го разрешите по начин, който удовлетворява крайните потребители? Може ли да се разреши без помощта на потребителя?

Възможните стратегии могат да бъдат

  • презапишете промените на предишния потребител (често не това, което искате - следователно необходимостта от контрол на паралелност),

  • показва съобщение за грешка с молба от потребителя да опресни и да извърши отново промените си,

  • автоматично обединяване на промените, без да се презаписват промените на предишния потребител (понякога е възможно)

  • информирайте потребителя за неизползваемостта на неговите данни и му предложете начин ръчно да обедини промените си

Всичко зависи от контекста.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на съхранено поле за дата за изчисляване на поле, което изчислява текущия брой изминали дни

  2. Изтрийте данни от mysql и angular

  3. Как да създам постоянни връзки, които се управляват от база данни?

  4. Как да покажа релационни данни в yii2

  5. Мога ли да направя mysql Select, Update и Delete в една заявка?