Ce face PS_THREAD_ID()
PS_THREAD_ID() primește un ID de conexiune (cel din SHOW PROCESSLIST sau din CONNECTION_ID()) și returnează THREAD_ID-ul folosit în tabelele din performance_schema.
Returnează NULL dacă nu există o conexiune cu acel ID, dacă argumentul este NULL sau dacă firul nu este monitorizat. Spre deosebire de funcția veche sys.ps_thread_id(), PS_THREAD_ID(NULL) nu înseamnă conexiunea curentă.
Parametri
| Parametru | Descriere |
|---|---|
id_conexiune |
ID-ul conexiunii, ca în SHOW PROCESSLIST. |
Ce returnează
Un număr BIGINT UNSIGNED sau NULL.
Exemple
Exemplul 1: Conexiunea curentă, NULL și un ID inexistent
SELECT PS_THREAD_ID(CONNECTION_ID()) = PS_CURRENT_THREAD_ID() AS curenta,
PS_THREAD_ID(NULL) AS cu_null,
PS_THREAD_ID(999999999) AS inexistent;
Rezultat
+---------+---------+------------+
| curenta | cu_null | inexistent |
+---------+---------+------------+
| 1 | NULL | NULL |
+---------+---------+------------+
Exemplul 2: Ultimele interogări ale unei alte conexiuni
Un administrator vede în SHOW PROCESSLIST conexiunea 23 și vrea să afle ce a rulat.
SELECT SQL_TEXT
FROM performance_schema.events_statements_history
WHERE THREAD_ID = PS_THREAD_ID(23)
ORDER BY EVENT_ID;
Rezultat în MySQL
+-------------------------------------------+
| SQL_TEXT |
+-------------------------------------------+
| SELECT * FROM produse WHERE stoc = 0 |
| UPDATE produse SET stoc = 10 WHERE id = 3 |
+-------------------------------------------+
Greșeli frecvente
- Scrii
PS_THREAD_ID(NULL)ca să obții firul curent, ca lasys.ps_thread_id(). PrimeștiNULL; foloseștePS_CURRENT_THREAD_ID().
Comenzi înrudite
PS_CURRENT_THREAD_ID(): Returnează ID-ul din Performance Schema al firului (thread) conexiunii curente.CONNECTION_ID(): Returnează numărul unic al conexiunii curente (ID-ul din SHOW PROCESSLIST).