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

Bordniveau Lås i dvale

"Vælg ... for opdatering" understøttes i Hibernate via LockMode.UPGRADE som du for eksempel kan indstille i en NamedQuery .

Men brug af applikation/manuel tabelrækkelåsning har flere ulemper (især når en databaseforbindelse bliver brudt halvvejs i en transaktion), og din opdateringsprocedure kan undvære det:

  • Start transaktion.
  • opdater tabelsæt state='PENDING', server_id=1 hvor state='I PROGRESS';
  • Forpligt transaktion
  • vælg fra tabel hvor state='PENDING' og server_id=1;
  • [procesregistreringer]

Hver server skal have et unikt nummer for at dette fungerer, men det vil være mindre fejltilbøjeligt, og du lader DBMS'en gøre det, den skal være god til:isolation (se ACID ).




  1. Hvad er use cases for at vælge CHAR frem for VARCHAR i SQL?

  2. Sådan indsætter du et array i en enkelt MySQL Prepared statement m/ PHP og PDO

  3. jQuery Validate Remote - Tjek, om e-mail allerede eksisterer

  4. SQL forbinder 2 tabeller til 1 tabel