Come visualizzare la query completa da SHOW PROCESSLIST


296

Quando invio la query SHOW PROCESSLIST, nella colonna informazioni vengono restituiti solo i primi 100 caratteri della query SQL in esecuzione.

È possibile modificare la configurazione di Mysql o inviare un diverso tipo di richiesta per visualizzare la query completa (le query che sto visualizzando sono più lunghe di 100 caratteri)

Risposte:


482
SHOW FULL PROCESSLIST

Se non si usa FULL, "solo i primi 100 caratteri di ogni dichiarazione sono riportati nel Infocampo" .

Quando si utilizza phpMyAdmin, è necessario anche fare clic sull'opzione "Testi completi" ("← T →" nell'angolo in alto a sinistra della tabella dei risultati) per visualizzare risultati non troncati.


3
Sembra che phpmyadmin non se ne preoccupi e mostra comunque le informazioni troncate.
giorgio79,

@ giorgio79: se ricordo bene, phpMyAdmin tronca tutti i risultati delle stringhe. Sono passati quattro anni da quando ho fatto qualsiasi sviluppo web, quindi potrei benissimo sbagliarmi.
James McNellis,

2
Vedo che le query vengono troncate dopo una certa lunghezza anche durante l'utilizzo SHOW FULL PROCESSLIST. Posso renderlo ancora più pieno in qualche modo?
wizonesolutions,

il comando ha SHOW FULL PROCESSLISTbisogno di un punto e virgola ;alla fine giusto?
Rakibul Haq,

1
@ R.Haq Se è l'unica query che stai per fare, il punto e virgola non è necessario. Se si desidera eseguire più di una query, è necessario il punto e virgola dopo ciascuna di esse.
Julio Garcia,

85

Show Processlist recupera le informazioni da un'altra tabella. Ecco come è possibile estrarre i dati e guardare la colonna 'INFO' che contiene l'intera query:

select * from INFORMATION_SCHEMA.PROCESSLIST where db = 'somedb';

È possibile aggiungere qualsiasi condizione o ignorare in base alle proprie esigenze.

L'output della query è il risultato:

+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
| ID    | USER | HOST            | DB     | COMMAND | TIME | STATE     | INFO                                                     |
+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
|     5 | ssss | localhost:41060 | somedb | Sleep   |    3 |           | NULL                                                     |
| 58169 | root | localhost       | somedb | Query   |    0 | executing | select * from sometable where tblColumnName = 'someName' |

12
Questa è probabilmente la risposta più utile.
dr_

La mia colonna di informazioni mostra COMMIT. Sai come posso visualizzare maggiori dettagli sulla query effettiva?
m.spyratos,

localhost: 41060, cosa significa 41060? qualche ipotesi?
Farveen Hassan,

12

Ho appena letto nella documentazione di MySQL che SHOW FULL PROCESSLISTper impostazione predefinita elenca solo i thread della tua connessione utente corrente .

Citazione dalla documentazione di PROCESSLIST COMPLETA di MySQL SHOW:

Se si dispone del privilegio PROCESS, è possibile visualizzare tutti i thread.

Quindi puoi abilitare la Process_privcolonna nella tua mysql.usertabella. Ricordati di eseguire in FLUSH PRIVILEGESseguito :)


12

Vedi la query completa da SHOW PROCESSLIST:

SHOW FULL PROCESSLIST;

O

 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;

10

Se si desidera continuare a ricevere processi aggiornati (nell'esempio, 2 secondi) in una sessione di shell senza dover interagire manualmente con essa, utilizzare:

watch -n 2 'mysql -h 127.0.0.1 -P 3306 -u some_user -psome_pass some_database -e "show full processlist;"'

L'unica cosa negativa di show [full] processlistè che non è possibile filtrare il risultato di output. D'altra parte, emettendo le SELECT * FROM INFORMATION_SCHEMA.PROCESSLISTpossibilità aperte per rimuovere dall'output tutto ciò che non si desidera vedere:

SELECT * from INFORMATION_SCHEMA.PROCESSLIST
WHERE DB = 'somedatabase'
AND COMMAND <> 'Sleep'
AND HOST NOT LIKE '10.164.25.133%' \G
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.