Fijo que muchos de vosotros os habéis preguntado alguna vez cómo obtener el proceso completo que se está ejecutando un MySQL. Por defecto, esto se consigue con 'show processlist', pero este comando, si el proceso ocupa más de un límite corta la línea, evitando así que veamos query's completas si éstas son muy grandes.
Por poner un ejemplo,
mysql> SHOW PROCESSLIST; +----+------+-----------+-----+---------+------+-------+----------------- | Id | User | Host | db | Command | Time | State | Info +----+------+-----------+-----+---------+------+-------+----------------- | 10 | web | localhost | web | Sleep | 118 | | NULL | 14 | web | localhost | web | Query | 0 | NULL | SHOW PROCESSLIST +----+------+-----------+-----+---------+------+-------+----------------- 2 rows in set (0.01 sec)
Como podemos observar, ahora que no hay ninguna query compleja, la salida es correcta y completa. Sin embargo, si ejecutamos alguna query grande y volvemos a ver los procesos, el resultado cambia sustancialmente.
mysql> SHOW PROCESSLIST; +----+------+-----------+-----+---------+------+---------+--------------- | Id | User | Host | db | Command | Time | State | Info +----+------+-----------+-----+---------+------+---------+--------------- | 10 | web | localhost | web | Sleep | 118 | | NULL | 14 | web | localhost | web | Query | 0 | NULL | SHOW PROCESSLIST | 17 | webb | localhost | web | Query | 0 | Sending | SELECT t.*,i.hostid FROM triggers t,items i,ho | +----+------+-----------+-----+---------+------+--------------+---------- 3 rows in set (0.01 sec)
En este caso, el proceso con Id: 17, un "SELECT" no está completo y por lo tanto no sabemos qué query es la que se está lanzando. Puede que esta información no sea necesaria, o puede que sí. En caso de que sí la necesites ver, el comando 'show' tiene la posibilidad de decirle que se ejecute con la salida completa y por lo tanto nos mostrará las query's. Para ello,
mysql> SHOW FULL PROCESSLIST; +----+------+-----------+-----+---------+------+--------------+---------- | Id | User | Host | db | Command | Time | State | Info +----+------+-----------+-----+---------+------+--------------+---------- | 10 | web | localhost | web | Sleep | 118 | | NULL | 14 | web | localhost | web | Query | 0 | NULL | SHOW PROCESSLIST | 17 | webb | localhost | web | Query | 0 | Sending data | SELECT t.*,i.hostid FROM triggers t,items i,hosts h WHERE h.hostid=t.hostid AND h.hostid=i.hostid AND h.hostid="15" h.status="0" +----+------+-----------+-----+---------+------+--------------+---------- 3 rows in set (0.01 sec)Como vemos ahora el comando ya está al completo, que era justamente lo que buscábamos.
La entrada MySQL FULL PROCESSLIST la puedes leer en Puppet Linux.
No hay comentarios :
Publicar un comentario