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.