357 votes

Comment voir la requête complète à partir de SHOW PROCESSLIST ?

Lorsque je lance la requête SHOW PROCESSLIST, seuls les 100 premiers caractères de la requête SQL en cours sont affichés dans la colonne info.

Est-il possible de modifier la configuration de Mysql ou d'émettre un autre type de requête pour voir la requête complète (les requêtes que je regarde font plus de 100 caractères) ?

572voto

James McNellis Points 193607
SHOW FULL PROCESSLIST

Si vous n'utilisez pas FULL , " seuls les 100 premiers caractères de chaque déclaration sont affichés dans la Info champ" .

Lorsque vous utilisez phpMyAdmin, vous devez également cliquer sur l'option "Textes complets" ("← T →" dans le coin supérieur gauche d'un tableau de résultats) pour voir les résultats non tronqués.

3 votes

Il semble que phpmyadmin ne s'en soucie pas, et affiche toujours les informations tronquées.

0 votes

@giorgio79 : Si je me souviens bien, phpMyAdmin tronque tous les résultats des chaînes de caractères. Mais cela fait quatre ans que je n'ai pas fait de développement web, donc je peux très bien me tromper.

2 votes

Je constate que des requêtes sont tronquées après une certaine longueur, même en utilisant SHOW FULL PROCESSLIST . Est-ce que je peux le rendre encore plus volumineux ?

130voto

Yogesh A Sakurikar Points 1355

Show Processlist va chercher l'information dans une autre table. Voici comment vous pouvez extraire les données et regarder la colonne 'INFO' qui contient la requête complète :

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

Vous pouvez ajouter n'importe quelle condition ou ignorer en fonction de vos besoins.

Le résultat de la requête est le suivant :

+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
| 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' |

17 votes

C'est probablement la réponse la plus utile.

0 votes

Ma colonne d'information indique COMMIT . Savez-vous comment je peux obtenir plus de détails sur la requête actuelle ?

0 votes

Localhost:41060 , à quoi correspond 41060 ? une idée ?

20voto

Hasib Kamal Points 742

Voir la requête complète de SHOW PROCESSLIST :

SHOW FULL PROCESSLIST;

Ou

 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;

15voto

hardcoder Points 153

Je viens de lire dans le Documentation sur MySQL que SHOW FULL PROCESSLIST par défaut ne liste que les fils à partir de votre connexion utilisateur actuelle .

Citation de la documentation MySQL SHOW FULL PROCESSLIST :

Si vous disposez du privilège PROCESS, vous pouvez voir tous les fils de discussion.

Vous pouvez donc activer le Process_priv dans votre mysql.user table. N'oubliez pas d'exécuter FLUSH PRIVILEGES après :)

0 votes

Ce n'est pas le cas si vous êtes root .

13voto

cristianoms Points 51

Si l'on veut continuer à obtenir des processus mis à jour (sur l'exemple, 2 secondes) sur une session shell sans avoir à interagir manuellement avec elle, utilisez :

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

La seule mauvaise chose à propos de la show [full] processlist est que vous ne pouvez pas filtrer le résultat de la sortie. D'autre part, l'émission de la commande SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST des possibilités ouvertes pour supprimer de la sortie tout ce que vous ne voulez pas voir :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X