CONNECTION_ID() în MySQL

Returnează numărul unic al conexiunii curente (ID-ul din SHOW PROCESSLIST).

Sintaxă
CONNECTION_ID()

Ce face CONNECTION_ID()

Fiecare conexiune la server primește un număr, unic printre conexiunile deschise în acel moment. Este același număr ca în coloana Id din SHOW PROCESSLIST și în coloana PROCESSLIST_ID din performance_schema.threads.

Numărul este util pentru a opri o interogare blocată (KILL QUERY id) sau pentru a afla cine ține o blocare (IS_USED_LOCK() returnează tot un ID de conexiune).

Ce returnează

Un număr întreg pozitiv.

Exemple

Exemplul 1: ID-ul conexiunii

SELECT CONNECTION_ID();

Rezultat posibil (diferă la fiecare rulare)

+-----------------+
| CONNECTION_ID() |
+-----------------+
|           23786 |
+-----------------+

Exemplul 2: Detalii despre propria conexiune

SELECT PROCESSLIST_USER, PROCESSLIST_HOST, NAME
FROM performance_schema.threads
WHERE PROCESSLIST_ID = CONNECTION_ID();

Rezultat

+------------------+------------------+---------------------------+
| PROCESSLIST_USER | PROCESSLIST_HOST | NAME                      |
+------------------+------------------+---------------------------+
| root             | localhost        | thread/sql/one_connection |
+------------------+------------------+---------------------------+

Greșeli frecvente

  • Folosești CONNECTION_ID() ca identificator permanent. După închiderea conexiunii, numărul poate fi refolosit; pentru identificatori unici folosește UUID().
  • Confunzi ID-ul conexiunii cu ID-ul firului din Performance Schema. Pentru acesta există PS_CURRENT_THREAD_ID().

Comenzi înrudite

  • PS_CURRENT_THREAD_ID(): Returnează ID-ul din Performance Schema al firului (thread) conexiunii curente.
  • PS_THREAD_ID(): Transformă ID-ul unei conexiuni în ID-ul firului ei din Performance Schema.
  • IS_USED_LOCK(): Returnează ID-ul conexiunii care ține o blocare cu nume, sau NULL dacă este liberă.