Comment voir la requête complète de SHOW PROCESSLIST


296

Lorsque j'émets une requête SHOW PROCESSLIST, seuls les 100 premiers caractères de la requête SQL en cours d'exécution sont renvoyés dans la colonne d'informations.

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

Réponses:


482
SHOW FULL PROCESSLIST

Si vous n'utilisez pas FULL, "seuls les 100 premiers caractères de chaque instruction sont affichés dans le Infochamp" .

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


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

@ giorgio79: Si je me souviens bien, phpMyAdmin tronque tous les résultats de chaîne. Cela fait quatre ans que je n'ai fait aucun développement web, donc je peux très bien me tromper.
James McNellis

2
Je vois des requêtes être tronquées après une certaine durée, même lors de l'utilisation SHOW FULL PROCESSLIST. Puis-je le rendre encore plus complet d'une manière ou d'une autre?
wizonesolutions

la commande a SHOW FULL PROCESSLISTbesoin d'un point-virgule ;à la fin, non?
Rakibul Haq

1
@ R.Haq Si c'est la seule requête que vous allez faire, le point-virgule n'est pas nécessaire. Si vous souhaitez effectuer plusieurs requêtes, vous avez besoin du point-virgule après chacune d'elles.
Julio Garcia

85

Show Processlist récupère les informations d'une autre table. Voici comment vous pouvez extraire les données et regarder la colonne 'INFO' qui contient la requête entière:

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

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

La sortie de la requête est le résultat:

+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
| 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
C'est probablement la réponse la plus utile.
dr_

Ma colonne d'informations s'affiche COMMIT. Savez-vous comment afficher plus de détails sur la requête réelle?
m.spyratos

localhost: 41060, que signifie 41060? toute proposition ?
Farveen Hassan

12

Je viens de lire dans la documentation MySQL qui SHOW FULL PROCESSLISTpar défaut ne répertorie que les threads 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 threads.

Vous pouvez donc activer la Process_privcolonne dans votre mysql.usertable. N'oubliez pas d'exécuter FLUSH PRIVILEGESensuite :)


12

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

SHOW FULL PROCESSLIST;

Ou

 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;

10

Si l'on veut continuer à obtenir des processus mis à jour (dans 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] processlistc'est que vous ne pouvez pas filtrer le résultat de sortie. D'un autre côté, émettre les SELECT * FROM INFORMATION_SCHEMA.PROCESSLISTpossibilité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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.