¿Cómo puedo detener una consulta MySQL en ejecución?
Me conecto a mysql
desde mi shell de Linux. De vez en cuando corro una consulta SELECT
que es demasiado grande. Imprime y imprime y ya sé que esto no es lo que quería decir. Me gustaría detener la consulta.
Golpear Ctrl+C
(un par de veces) mata mysql
completamente y me lleva de vuelta a shell, así que tengo que volver a conectarme.
¿Es posible detener una consulta sin matar a mysql
?
6 answers
mysql>show processlist;
mysql> kill "number from first col";
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-05 23:07:58
Solo para añadir
KILL QUERY **Id**
donde Id es id de conexión desde show processlist
Es más preferible si no desea matar la conexión generalmente cuando se ejecuta desde alguna aplicación.
Para más detalles puede leer mysql doc aquí
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-22 12:32:22
Conectar a mysql
mysql -uusername -p -hhostname
Mostrar lista de procesos completa:
mysql> show full processlist;
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| 9255451 | logreg | dmin001.ops:37651 | logdata | Query | 0 | NULL | show processlist |
+---------+--------+-------------------+---------+---------+------+-------+------------------+
Elimina la consulta específica. Aquí id=9255451
mysql> kill 9255451;
Si obtiene permiso denegado, pruebe este SQL:
CALL mysql.rds_kill(9255451)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-29 07:09:07
Use mysqladmin
para eliminar la consulta runaway:
Ejecute los siguientes comandos:
mysqladmin -uusername -ppassword pr
Luego anote el id del proceso.
mysqladmin -uusername -ppassword kill pid
La consulta runaway ya no debería consumir recursos.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-28 22:07:38
Si tiene mysqladmin
disponible, puede obtener la lista de consultas con:
> mysqladmin -uUSERNAME -pPASSWORD pr
+-----+------+-----------------+--------+---------+------+--------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+-----------------+--------+---------+------+--------------+------------------+
| 137 | beet | localhost:53535 | people | Query | 292 | Sending data | DELETE FROM |
| 145 | root | localhost:55745 | | Query | 0 | | show processlist |
+-----+------+-----------------+--------+---------+------+--------------+------------------+
Entonces puede detener el proceso mysql que está alojando la consulta de larga duración:
> mysqladmin -uUSERNAME -pPASSWORD kill 137
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-23 15:29:20
El autor de esta pregunta menciona que por lo general es solo después de
MySQL imprime su salida que se da cuenta de que la consulta incorrecta fue ejecutada.
Como se ha señalado, en este caso, Ctrl-C
no ayuda. Sin embargo, he notado que
abortará la consulta actual {[8–} - si la captura antes de cualquier salida es
impreso. Por ejemplo:
mysql> select * from jos_users, jos_comprofiler;
MySQL se ocupa de generar el Producto Cartesiano de las dos tablas anteriores y
pronto se dará cuenta de que MySQL no ha impreso ninguna salida a la pantalla (proceso
el estado es Enviando datos ) así que escribe Ctrl-C
:
Ctrl-C -- sending "KILL QUERY 113240" to server ...
Ctrl-C -- query aborted.
ERROR 1317 (70100): Query execution was interrupted
Ctrl-C
también se puede usar para detener una consulta UPDATE
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-16 09:25:49