SHOW [FULL] PROCESSLIST
SHOW PROCESSLIST
le muestra qué flujos
están en ejecución. Puede obtener esta información usando
el comando mysqladmin processlist . Si
tiene el permiso SUPER
, puede ver todos
los flujos. De otro modo, puede ver sólo los propios (esto
es, flujos asociados con la cuenta MySQL que está usando).
Consulte Sección 13.5.5.3, “Sintaxis de KILL
”. Si no usa la palabra clave
FULL
, sólo los primeros 100 caracteres de
cada consulta se muestran.
En MySQL 5.0, el comando reporta el nombre de equipo ara
conexiones TCP/IP en formato
para hacer más fácil determinar qué hace cada cliente.
host_name
:client_port
Este comando es útil si obtiene el mensaje de error
"demasiadas conexiones" para encontrar qué ocurre. MySQL
reserva una conexión extra para usar por cuentas con el
permiso SUPER
, para asegurar que el
administrador siempre es capaz de conectar y comprobar el
sistema (asumiendo que no da este permiso a todos los
usuarios).
Algunos estados vistos comúnmente en la salida de
SHOW PROCESSLIST
:
Checking table
El flujo está realizando un chequeo (automático) de la tabla.
Closing tables
Significa que el flujo está volcando los datos que han cambiado de la tabla a disco y cerrando las tablas usadas. Esto debe ser una operación rápido. Si no lo es, debe verificar que no tiene el disco lleno y que el disco no tiene un uso muy pesado.
Connect Out
Esclavo conectando con el maestro.
Copying to tmp table on disk
El conjunto de resultados temporal era mayor que
tmp_table_size
y el flujo está
cambiando la tabla temporal de memoria a disco para
ahorrar memoria.
Creating tmp table
El flujo está creando una tabla temporal para guardar parte del resultado de una consulta.
deleting from main table
El servidor está ejecutando la primera parte de un borrado de tablas múltiple y borrando sólo la primera tabla.
deleting from reference tables
El servidor está ejecutando la segunda parte de un borrado de tablas múltiples y borrando los registros coincidentes de las otras tablas.
Flushing tables
El flujo está ejecutando FLUSH TABLES
y espera a que todos los flujos cierren sus tablas.
Killed
Alguien ha enviado un comando KILL
al
flujo y debería abortar en cuanto chequee el flag kill.
El flag se chequea en cada vuelta al bucle principal de
MySQL, pero en algunos casos puede tardar algo de tiempo
en que muera el flujo. Si el flujo está bloqueado por
algún otro flujo, el kill tiene efecto en cuanto el otro
flujo libera el bloqueo.
Locked
La consulta está bloqueada por otra consulta.
Sending data
El flujo está procesando registros para un comando
SELECT
y también enviando datos al
cliente.
Sorting for group
El flujo está ordenando para un GROUP
BY
.
Sorting for order
El flujo está ordenando para un ORDER
BY
.
Opening tables
El flujo está intentando abrir una tabla. Esto debería
ser un proceso muy rápido, a no ser que algo importante
evite la abertura. Por ejemplo, un comando ALTER
TABLE
o LOCK TABLE
puede
evitar abrir una tabla hasta que el comando acabe.
Removing duplicates
La consulta usaba SELECT DISTINCT
de
forma que MySQL no podía optimizar las distintas
operaciones en una fase temprana. Debido a ello, MySQL
necesita una fase extra para borrar todos los registros
duplicados antes de enviar el resultado al cliente.
Reopen table
El flujo obtivo un bloqueo para la tabla, pero se dio cuenta tras obtenerlo que la estructura de la tabla cambió. Se libera el bloqueo, cierra la tabla y trata de reabrirla.
Repair by sorting
El código de reparación está usando una ordenación para crear índices.
Repair with keycache
El código de reparación está usando creación de claves
una a una en la caché de claves. Esto es mucho más lento
que Repair by sorting
.
Searching rows for update
El flujo hace una primera fase para encontrar todos los
registro coincidentes antes de actualizarlos. Esto debe
hacerse si UPDATE
está cambiando el
índice que se usa para encontrar los registros
implicados.
Sleeping
El flujo espera que el cliente envíe un nuevo comando .
System lock
El flujo espera obtener un bloqueo de sistema externo para
la tabla. Si no está usando múltiples servidors
mysqld accediendo a las mismas tablas,
puede deshabilitar los bloqueos de sistema con la opción
--skip-external-locking
.
Upgrading lock
El handler INSERT DELAYED
trata de
obtener un bloqueo para la tabla para insertar registros.
Updating
El flujo está buscando registros para actualizar.
User Lock
El flujo espera un GET_LOCK()
.
Waiting for tables
El flujo obtuvo una notificación que la estructura de la tabla cambió y necesita reabrirla. Sin embargo, para ello, debe esperar a que el resto de flujos cierren la tabla en cuestión.
Esta notificación tiene lugar si otro flujo ha usado
FLUSH TABLES
o uno de los siguientes
comandos en la tabla en cuestión: FLUSH TABLES
,
tbl_name
ALTER TABLE
, RENAME
TABLE
, REPAIR TABLE
,
ANALYZE TABLE
, o OPTIMIZE
TABLE
.
waiting for handler insert
El handler INSERT DELAYED
ha procesado
las inserciones pendientes y espera nuevas.
La mayoría de estados se corresponden a operaciones rápidas. Si un flujo está en alguno de ellos varios segundos, puede existir un problema que necesite investigar.
Hay algunos estdos que no se mencionan en la lista precedente, pero varios de ellos son útiles sólo para encontrar fallos en el servidor.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.