2012-04-27 11 views
120

¿Qué significa si la consulta MySQL:¿Qué significa cuando MySQL está en el estado "Enviando datos"?

SHOW PROCESSLIST; 

devuelve "envío de datos" en la columna Estado?

Imagino que significa que la consulta se ha ejecutado y MySQL está enviando datos de "resultado" al cliente, pero me pregunto por qué toma tanto tiempo (hasta una hora).

Gracias.

+1

Significa que está transmitiendo datos de su proceso al cliente. Si ve 'Envío de datos' como un paso que lleva tiempo después de ejecutar' SHOW PROFILE', entonces el tiempo consumido en realidad pertenece al paso anterior. –

+0

Lamentablemente tomo un mensaje, la función 'SHOW PROFILE' está desactivada, tengo que construir MySQL con 'enable-profiling'. Pero gracias por su respuesta. – user1345414

+0

Y es una pregunta adicional. La consulta ya ha finalizado internamente, ¿es una cuestión de recursos para la transmisión, como red o bus? – user1345414

Respuesta

182

Esto es un estado bastante engañoso. Debería llamarse "lectura y filtrado de datos".

Esto significa que MySQL tiene algunos datos almacenados en el disco (o en la memoria) que aún debe leerse y enviarse. Puede ser la tabla en sí, un índice, una tabla temporal, una salida ordenada, etc.

Si tiene una tabla de registros de 1M (sin índice) de la cual necesita solo un registro, MySQL seguirá generando el estado como "enviar datos" mientras escanea la tabla, a pesar de que todavía no ha enviado nada.

+10

La documentación que explica con más detalle que el razonamiento es más probable debido a un montón de tiempo al acceder al disco: http://dev.mysql.com/doc/refman/5.0/en/general-thread-states.html –

+1

Y qué si MySQL está "enviando datos" mientras usa 99% de CPU, con muy poca E/S de disco? – rustyx

+0

@RustyX ¿Qué hay de los datos que ya están presentes en el búfer en la RAM y está ordenando unas 100k o 1M de filas? – sjas

14

En este estado:

El hilo es lectura y procesamiento de registros para un comando SELECT , y el envío de datos al cliente.

Dado que las operaciones que se producen durante este estado tienden a realizar grandes cantidades de acceso al disco (lecturas).

Es por eso que se necesita más tiempo para completar y también lo es el estado de más larga duración durante la vida de una consulta determinada.

Cuestiones relacionadas