189 votes

Qu'est-ce que cela signifie quand MySQL est dans l'état "Envoi de données"?

Qu'est-ce que cela signifie si la requête Mysql:

 SHOW PROCESSLIST;
 

renvoie "Envoi de données" dans la colonne Etat?

J'imagine que cela signifie que la requête a été exécutée et que MySQL envoie des "résultats" au client, mais je me demande pourquoi cela prend autant de temps (jusqu'à une heure).

Je vous remercie.

295voto

Quassnoi Points 191041

C'est tout à fait un état trompeur. Il devrait être appelé "lecture et de filtrage des données".

Cela signifie qu' MySQL a certaines données stockées sur le disque (ou la mémoire) qui n'est pas encore lire et envoyées. Il peut être de la table, un index, une table temporaire, triés sortie etc.

Si vous avez un 1M enregistrements de la table (sans index) dont vous avez besoin d'un seul enregistrement, MySQL sera encore sortie de l'état comme "l'envoi de données" lors de la numérisation de la table, malgré le fait qu'elle n'a pas envoyé encore rien.

27voto

Venky Points 14

Dans cet état, le thread lit et traite les lignes d'une instruction SELECT et envoie des données au client.

Parce que les opérations effectuées pendant cet état ont tendance à effectuer de grandes quantités d’accès au disque (lectures) .

C'est pourquoi il faut plus de temps pour terminer, de sorte que l' état le plus long sur la durée de vie d'une requête donnée.

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