¿Qué significa si la consulta Mysql:
SHOW PROCESSLIST;
devuelve "Enviando datos" en la columna Estado?
Me imagino que significa que la consulta se ha ejecutado y MySQL está enviando datos de "resultados" al cliente, pero me pregunto por qué lleva tanto tiempo (hasta una hora).
Gracias.
Sending data
como un paso que lleva tiempo después de correrSHOW PROFILE
, el tiempo consumido en realidad pertenece al paso anterior.Sending data
muestra como tomar tiempo es porque es un error de creación de perfiles de MySQL, el tiempo que se muestra allí pertenece al paso anterior, que debería serExecuting query
o algo similar. Simplemente significa que su consulta toma tiempo para ejecutarse.Sending data
El paso suele ser rápido, a menos que transmita cientos de megabytes de datos.Respuestas:
Este es un estado bastante engañoso. Debería llamarse "leer y filtrar datos".
Esto significa que
MySQL
tiene algunos datos almacenados en el disco (o en la memoria) que aún no se han leído y enviado. Puede ser la tabla en sí, un índice, una tabla temporal, una salida ordenada, etc.Si tiene una tabla de registros de 1M (sin un índice) de la que necesita solo un registro,
MySQL
seguirá mostrando el estado como "envío de datos" mientras escanea la tabla, a pesar de que todavía no ha enviado nada.fuente
En este estado:
Es por eso que lleva más tiempo completarlo y, por lo tanto, es el estado de ejecución más larga durante la vida útil de una consulta determinada.
fuente