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

Blokowanie stołu za pomocą hibernacji

Musisz użyć pesymistycznego blokowania, które można osiągnąć za pomocą

setLockMode(String alias, LockMode lockMode) 

w zapytaniu i użyj LockMode.UPGRADE .

Zobacz Query.setLockMode

Jednak z pewnością zabije to skalowalność i wydajność, jeśli robisz dużo dostępu do tej tabeli. Lepiej albo używając sekwencji, albo innej strategii jest stworzenie usługi przydzielania numerów (np. SSB), która pobiera 100 numerów na raz, aktualizuje bazę danych i rozdaje je. To oszczędza 198 dostępów do bazy danych.

AKTUALIZACJA:

Będziesz także musiał nieznacznie zmodyfikować projekt stołu. Lepiej jest mieć jeden wiersz ze znanym identyfikatorem i przechowywać liczbę, którą zwiększasz, w innej kolumnie. Następnie należy zaktualizować wiersz, zamiast usuwać stary wiersz i dodawać nowy. W przeciwnym razie strategia blokowania wierszy nie zadziała.

AKTUALIZACJA2:

OP stwierdził, że działają następujące elementy:

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. Pobierz adres IP klienta w mysql

  2. Nie można połączyć się z mysql w 127.0.0.1:3306 z odmową dostępu użytkownika root dla użytkownika 'root'@'localhost' (przy użyciu hasła:TAK)

  3. Pobierz identyfikatory obecnych użytkowników z bazy danych, aby użyć ich w nowej tabeli

  4. Mysql formatuje ciąg, taki jak XXXXXXXXXXXX do XX-XX-XXXXXXX-X

  5. Jak uruchomić lub załadować pliki .po/.mo do lokalizacji w php