A veces, durante un SNAFU, tengo que correr kill query xxxxxxx
veinte o treinta veces. ¿Algún tipo de kill all
comando que me falta?
Debido a que no me gusta escribir.
A veces, durante un SNAFU, tengo que correr kill query xxxxxxx
veinte o treinta veces. ¿Algún tipo de kill all
comando que me falta?
Debido a que no me gusta escribir.
Respuestas:
Desde la línea de comando de Linux
for PROC_TO_KILL in `mysql -h... -u... -p... -A --skip-column-names -e"SHOW PROCESSLIST" | grep -v "system user" | awk '{print $1}'` ; do mysql -h... -u... -p... -A --skip-column-names -e"KILL QUERY ${PROC_TO_KILL}" ; done
Puede cambiar la opción grep en el encabezado del bucle for para localizar un usuario específico o una cadena específica en la consulta.
Si tiene MySQL 5.1 donde la lista de procesos está en INFORMATION_SCHEMA, puede hacer esto para generar los comandos KILL QUERY en masa desde dentro del cliente mysql:
SELECT GROUP_CONCAT(CONCAT('KILL QUERY ',id,';') SEPARATOR ' ') KillQuery
FROM information_schema.processlist WHERE user<>'system user'\G
Puede hacer cláusulas WHERE en el campo INFO para buscar una consulta específica, el campo TIME en consultas de ejecución prolongada o el campo DB en una base de datos específica.
mysql> select concat('KILL ',id,';') from information_schema.processlist where user='root' into outfile '/tmp/a.txt';
Query OK, 2 rows affected (0.00 sec)
mysql> source /tmp/a.txt;
Query OK, 0 rows affected (0.00 sec)
http://www.mysqlperformanceblog.com/2009/05/21/mass-killing-of-mysql-connections/