Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql read lock SELECT FOR UPDATE

Vous recherchez des verrous nommés (attention, trucs dangereux, n'hésitez pas à expérimenter avec des verrous sur des serveurs de production :D).

Jetez un oeil à :

A1  :Choisissez une chaîne unique à verrouiller et utilisez GET_LOCK dessus (par exemple, GET_LOCK('conversation_' || [id]); s'il renvoie 1 la serrure est à vous. Faites ce que vous voulez et appelez plus tard RELEASE_LOCK (compte tenu de tous les scénarios possibles, y compris les erreurs).

A2  :Le deuxième paramètre de GET_LOCK est un délai d'attente en secondes . Si l'opération expire GET_LOCK renverra 0 .

De la documentation officielle

Les gras sont de moi :

  1. Signifie que vous ne pouvez détenir qu'un seul verrou par connexion (ce n'est pas un problème pour votre cas d'utilisateur)
  2. Signifie que les verrous seront libérés une fois que vous aurez fermé la connexion
  3. Signifie que deux connexions différentes (même issues du même pool) peuvent ne pas acquérir la même apparence en même temps.