Cómo ver la consulta completa de SHOW PROCESSLIST

296

Cuando publico la consulta SHOW PROCESSLIST, solo se devuelven los primeros 100 caracteres de la consulta SQL en ejecución en la columna de información.

¿Es posible cambiar la configuración de Mysql o emitir un tipo diferente de solicitud para ver la consulta completa (las consultas que estoy viendo tienen más de 100 caracteres)

Jinete Fantasma
fuente

Respuestas:

482
SHOW FULL PROCESSLIST

Si no usa FULL, "solo se muestran los primeros 100 caracteres de cada instrucción en el Infocampo" .

Cuando use phpMyAdmin, también debe hacer clic en la opción "Textos completos" ("← T →" en la esquina superior izquierda de una tabla de resultados) para ver resultados no truncados.

James McNellis
fuente
3
Parece que phpmyadmin no se preocupa por esto, y aún muestra la información truncada.
giorgio79
@ giorgio79: si recuerdo correctamente, phpMyAdmin trunca todos los resultados de la cadena. Sin embargo, han pasado cuatro años desde que hice cualquier desarrollo web, por lo que podría estar muy equivocado.
James McNellis
2
Veo que las consultas se truncan después de una cierta longitud incluso cuando se usan SHOW FULL PROCESSLIST. ¿Puedo hacerlo aún más completo de alguna manera?
wizonesolutions
el comando SHOW FULL PROCESSLISTnecesita un punto y coma ;al final ¿verdad?
Rakibul Haq
1
@ R.Haq Si es la única consulta que va a hacer, entonces el punto y coma no es necesario. Si desea hacer más de una consulta, entonces necesita el punto y coma después de cada una de ellas.
Julio García
85

Show Processlist obtiene la información de otra tabla. Así es como puede extraer los datos y mirar la columna 'INFO' que contiene la consulta completa:

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

Puede agregar cualquier condición o ignorar según sus requisitos.

El resultado de la consulta se produce como:

+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
| 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' |
Yogesh A Sakurikar
fuente
12
Esta es probablemente la respuesta más útil.
dr_
Mi columna de información muestra COMMIT. ¿Sabes cómo puedo ver más detalles sobre la consulta real?
m.spyratos
localhost: 41060, ¿qué significa 41060? Alguna conjetura ?
Farveen Hassan
12

Acabo de leer en la documentación de MySQL que SHOW FULL PROCESSLISTpor defecto solo enumera los hilos de su conexión de usuario actual .

Cita de la documentación de MySQL SHOW FULL PROCESSLIST:

Si tiene el privilegio de PROCESO, puede ver todos los hilos.

Entonces puede habilitar la Process_privcolumna en su mysql.usertabla. Recuerde ejecutar FLUSH PRIVILEGESdespués :)

codificador
fuente
12

Ver consulta completa de SHOW PROCESSLIST:

SHOW FULL PROCESSLIST;

O

 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
Hasib Kamal
fuente
10

Si desea seguir recibiendo procesos actualizados (en el ejemplo, 2 segundos) en una sesión de shell sin tener que interactuar manualmente con ella, use:

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

Lo único malo de esto show [full] processlistes que no puede filtrar el resultado de salida. Por otro lado, emitir las SELECT * FROM INFORMATION_SCHEMA.PROCESSLISTposibilidades abiertas para eliminar de la salida todo lo que no desea ver:

SELECT * from INFORMATION_SCHEMA.PROCESSLIST
WHERE DB = 'somedatabase'
AND COMMAND <> 'Sleep'
AND HOST NOT LIKE '10.164.25.133%' \G
cristianoms
fuente