Qu'est-ce que cela signifie si la requête Mysql:
SHOW PROCESSLIST;
renvoie "Envoi de données" dans la colonne État?
J'imagine que cela signifie que la requête a été exécutée et que MySQL envoie des données de «résultat» au client, mais je me demande pourquoi cela prend autant de temps (jusqu'à une heure).
Je vous remercie.
Sending data
comme une étape qui prend du temps après l'exécution,SHOW PROFILE
le temps consommé appartient en fait à l'étape précédente.Sending data
montre que cela prend du temps est que c'est un bogue de profilage MySQL, le temps affiché appartient à l'étape précédente, ce qui devrait êtreExecuting query
ou quelque chose de similaire. Cela signifie simplement que votre requête prend du temps à s'exécuter.Sending data
l'étape est généralement rapide, sauf si vous diffusez des centaines de mégaoctets de données.Réponses:
C'est un statut assez trompeur. Il devrait être appelé "lecture et filtrage des données".
Cela signifie que
MySQL
certaines données sont stockées sur le disque (ou en mémoire) qui doivent encore être lues et envoyées. Il peut s'agir de la table elle-même, d'un index, d'une table temporaire, d'une sortie triée, etc.Si vous avez une table d'enregistrements de 1M (sans index) dont vous n'avez besoin que d'un seul enregistrement,
MySQL
affichera toujours l'état "envoi de données" lors de l'analyse de la table, malgré le fait qu'elle n'a encore rien envoyé.la source
Dans cet état:
C'est pourquoi cela prend plus de temps, tout comme l' état le plus long sur la durée de vie d'une requête donnée.
la source