ver tiempo real procesos optimizacion monitorear liberar las inactivas eliminar cómo consultas conexiones comando mysql kill processlist

tiempo - ¿Cómo puedo detener una consulta MySQL en ejecución?



ver consultas mysql en tiempo real (6)

Me conecto a mysql desde mi shell de Linux. De vez en cuando ejecuto una consulta SELECT que es demasiado grande. Imprime e imprime y ya sé que esto no es lo que quise decir. Me gustaría detener la consulta.

Golpear Ctrl+C (un par de veces) mata a mysql completo y me lleva de vuelta al shell, así que debo volver a conectarme.

¿Es posible detener una consulta sin matar mysql ?


El autor de esta pregunta menciona que, generalmente, solo después de que MySQL imprime su salida, se da cuenta de que se ejecutó la consulta incorrecta. Como se señaló, en este caso, Ctrl-C no ayuda. Sin embargo, he notado que abortará la consulta actual , si la detecta antes de que se imprima cualquier salida. 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 ningún resultado en la pantalla (el estado del proceso es Enviar datos ), por lo 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 puede usarse de manera similar para detener una consulta de UPDATE .


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 hospeda la consulta de larga ejecución:

> mysqladmin -uUSERNAME -pPASSWORD kill 137


Solo para agregar

KILL QUERY **Id** donde Id es ID de conexión de show processlist

es más preferible si no quiere cancelar la conexión normalmente cuando se ejecuta desde alguna aplicación.

Para más detalles puedes leer mysql doc here


Utilice mysqladmin para matar la consulta fuera de control:

Ejecuta los siguientes comandos:

mysqladmin -uusername -ppassword pr

Luego anote la identificación del proceso.

mysqladmin -uusername -ppassword kill pid

La consulta fuera de control ya no debería consumir recursos.


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 | +---------+--------+-------------------+---------+---------+------+-------+------------------+

Matar la consulta específica. Aquí id = 9255451

mysql> kill 9255451;

Si obtiene un permiso denegado, pruebe este SQL:

CALL mysql.rds_kill(9255451)


mysql>show processlist; mysql> kill "number from first col";