RELEASE_ALL_LOCKS() în MySQL

Blocări cu nume MySQL 5.7.5+

Eliberează toate blocările cu nume ale conexiunii curente și spune câte au fost.

Sintaxă
RELEASE_ALL_LOCKS()

Ce face RELEASE_ALL_LOCKS()

RELEASE_ALL_LOCKS() eliberează dintr-o dată toate blocările luate cu GET_LOCK() de conexiunea curentă. Rezultatul este numărul de blocări eliberate; o blocare luată de două ori se numără de două ori.

Este utilă la finalul unei sarcini sau înainte ca o conexiune să fie returnată într-un pool, ca să nu rămână blocări uitate.

Ce returnează

Numărul de blocări eliberate (0 dacă nu era niciuna).

Exemple

Exemplul 1: Mai multe blocări, eliberate deodată

SELECT GET_LOCK('import_clienti', 0), GET_LOCK('import_produse', 0), GET_LOCK('import_produse', 0);

SELECT RELEASE_ALL_LOCKS() AS eliberate;
SELECT RELEASE_ALL_LOCKS() AS a_doua_oara;

Rezultat

+-------------------------------+-------------------------------+-------------------------------+
| GET_LOCK('import_clienti', 0) | GET_LOCK('import_produse', 0) | GET_LOCK('import_produse', 0) |
+-------------------------------+-------------------------------+-------------------------------+
|                             1 |                             1 |                             1 |
+-------------------------------+-------------------------------+-------------------------------+
+-----------+
| eliberate |
+-----------+
|         3 |
+-----------+
+-------------+
| a_doua_oara |
+-------------+
|           0 |
+-------------+

Greșeli frecvente

  • Crezi că RELEASE_ALL_LOCKS() eliberează și blocările altor conexiuni. Eliberează doar blocările conexiunii curente.

Comenzi înrudite

  • RELEASE_LOCK(): Eliberează o blocare luată cu GET_LOCK().
  • GET_LOCK(): Ia o blocare cu nume, pe tot serverul; alte conexiuni așteaptă până se eliberează.