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

Заключване на маса с хибернация

Трябва да използвате песимистично заключване, което може да се постигне чрез

setLockMode(String alias, LockMode lockMode) 

на заявката и използвайте LockMode.UPGRADE .

Вижте Query.setLockMode

Това обаче със сигурност ще убие мащабируемостта и производителността, ако правите много достъп до тази маса. По-добре е да използвате последователност или друга стратегия е да създадете услуга за разпределяне на номера (например SSB), която взема 100 номера наведнъж, актуализира базата данни и ги раздава. Това ви спестява 198 достъпа до базата данни.

АКТУАЛИЗАЦИЯ:

Също така ще трябва леко да промените дизайна на вашата маса. По-добре е да имате един ред с известен идентификатор и да съхранявате номера, който увеличавате в друга колона. След това трябва да актуализирате реда, вместо да изтривате стария ред и да добавяте нов. В противен случай стратегията за заключване на редове няма да работи.

АКТУАЛИЗАЦИЯ 2:

OP установи, че следното работи:

session.get(class.Class, id, lockOption)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL LIKE срещу LOCATE

  2. Как да накарам база данни на MySQL да работи изцяло в паметта?

  3. SELECT COUNT(*) AS count – Как да използвате този брой

  4. Време за отпадане в DateTime

  5. MySQL RESTRICT и БЕЗ ДЕЙСТВИЕ