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

Livello del tavolo Blocca in ibernazione

"Seleziona... per l'aggiornamento" è supportato in Hibernate tramite LockMode.UPGRADE che puoi impostare, ad esempio, un NamedQuery .

Ma l'utilizzo del blocco manuale/applicazione delle righe di tabella presenta diversi inconvenienti (soprattutto quando una connessione al database viene interrotta a metà transazione) e la procedura di aggiornamento può farne a meno:

  • Avvia transazione.
  • tabella di aggiornamento set state='PENDING', server_id=1 dove state='IN CORSO';
  • Compra transazione
  • seleziona dalla tabella dove state='PENDING' e server_id=1;
  • [processi record]

Ogni server deve avere un numero univoco affinché funzioni, ma sarà meno soggetto a errori e lascerai che il DBMS faccia ciò in cui dovrebbe essere bravo:isolamento (vedi ACID ).