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

Blocco lettura MySQL SELEZIONA PER AGGIORNAMENTO

Stai cercando lock con nome (roba attenta e pericolosa, non andare in giro a sperimentare i lock sui server di produzione :D).

Dai un'occhiata a:

A1 :scegli una stringa univoca da bloccare e usa GET_LOCK su di esso (diciamo, GET_LOCK('conversation_' || [id]); se restituisce 1 la serratura è tua. Fai quello che vuoi e poi chiama RELEASE_LOCK (tenendo conto di tutti i possibili scenari, inclusi gli errori).

A2 :Il secondo parametro di GET_LOCK è un timeout in secondi . Se l'operazione scade GET_LOCK restituirà 0 .

Dalla documentazione ufficiale

I grassetti sono miei:

  1. Significa che puoi mantenere solo un blocco per connessione (non è un problema per il tuo caso utente)
  2. Significa che i blocchi verranno rilasciati una volta chiusi la connessione
  3. Significa che due diverse connessioni (anche dello stesso pool) potrebbero non acquisire lo stesso aspetto contemporaneamente.