sql >> Databasteknik >  >> RDS >> Mysql

Bordsnivå Lås i viloläge

"Välj ... för uppdatering" stöds i Hibernate via LockMode.UPGRADE som du kan ställa in till exempel i en NamedQuery .

Men att använda applikation/manuell tabellradslåsning har flera nackdelar (särskilt när en databasanslutning bryts halvvägs i en transaktion) och din uppdateringsprocedur kan klara sig utan den:

  • Starta transaktionen.
  • uppdatera tabelluppsättning state='PENDING', server_id=1 där state='IN PROGRESS';
  • Bekräfta transaktion
  • välj från tabellen där state='PENDING' och server_id=1;
  • [processposter]

Varje server måste ha ett unikt nummer för att detta ska fungera, men det kommer att vara mindre felbenäget och du låter DBMS göra vad den ska vara bra på:isolering (se ACID ).




  1. Det går inte att logga in på databasen som SYS med Oracle SQL Developer

  2. SQLite användarbehörigheter

  3. Spara array i mysql-databasen

  4. Databasdesign för skolgångssystem