sql >> Database teknologi >  >> RDS >> Mysql

Låsning af et bord med dvale

Du skal bruge pessimistisk låsning, som kan opnås ved at

setLockMode(String alias, LockMode lockMode) 

på forespørgslen og brug LockMode.UPGRADE .

Se Query.setLockMode

Dette vil dog helt sikkert dræbe skalerbarhed og ydeevne, hvis du har meget adgang på dette bord. Du er bedre enten ved at bruge en sekvens eller en anden strategi er at oprette en service til at tildele numre (f.eks. en SSB), som griber 100 numre ad gangen, opdaterer databasen og deler dem ud. Det sparer dig for 198 databaseadgange.

OPDATERING:

Du bliver også nødt til at ændre dit borddesign lidt. Det er bedre at have en enkelt række med et kendt ID og at gemme det nummer, du øger i en anden kolonne. Så bør du opdatere rækken i stedet for at slette den gamle række og tilføje en ny. Ellers virker rækkelåsningsstrategien ikke.

OPDATERING 2:

OP fandt, at følgende virkede:

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



  1. Er der nogen boolesk type i Oracle-databaser?

  2. Sådan formateres tid til '2:34 timer', '0:34 timer' osv. i MySQL

  3. Sådan returneres tabel fra MySQL-funktionen

  4. MySQL:Jeg skal vise fra 1 til maksimalt n indlæg fra hver bruger pr. dag