sql >> Database >  >> RDS >> Mysql

Een tafel vergrendelen met slaapstand

U moet pessimistische vergrendeling gebruiken, wat kan worden bereikt door

setLockMode(String alias, LockMode lockMode) 

op de query en gebruik LockMode.UPGRADE .

Zie Query.setLockMode

Dit zal echter zeker de schaalbaarheid en prestaties doden als je veel toegang hebt tot deze tafel. U kunt beter een reeks gebruiken of een andere strategie is om een ​​service te creëren om nummers toe te wijzen (bijvoorbeeld een SSB) die 100 nummers tegelijk pakt, de database bijwerkt en deze uitdeelt. Dat bespaart u 198 databasetoegangen.

BIJWERKEN:

U zult ook uw tafelontwerp enigszins moeten wijzigen. Het is beter om een ​​enkele rij met een bekende ID te hebben en het nummer dat u verhoogt in een andere kolom op te slaan. Dan moet u de rij bijwerken in plaats van de oude rij te verwijderen en een nieuwe toe te voegen. Anders werkt de rijvergrendelingsstrategie niet.

UPDATE2:

OP ontdekte dat het volgende werkte:

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



  1. Woocommerce-bestellingen herstellen

  2. Python JSON-encoder om datetime te ondersteunen?

  3. SQL CASE-instructie

  4. Hoe krijg ik in SQL de maximale waarde voor een geheel getal?