Introducción
Los procesos de MySQL innecesarios pueden causar problemas de rendimiento en su sistema. Con el tiempo, los subprocesos activos se acumulan y bloquean su servidor, lo que impide que los usuarios accedan a las tablas y ejecuten solicitudes.
Cuando el uso de recursos es extremadamente alto, es posible que deba eliminar los procesos de MySQL. Esta guía le mostrará cómo identificar procesos de MySQL y eliminar un proceso.
Requisitos previos
- Acceso a una línea de comando/ventana de terminal
- MySQL o MariaDB instalado
- Usuario con sudo o raíz privilegios
Cómo encontrar la lista de procesos de MySQL
Antes de que pueda ubicar un proceso y eliminarlo, debe acceder a un servidor MySQL local o remoto. Para iniciar sesión en su cuenta local de MySQL como root, abra la terminal e ingrese:
mysql -u root -p
Escriba la contraseña cuando se le solicite. Cuando se carga el shell de MySQL, el indicador muestra mysql>
.
Para ubicar un proceso para matar o terminar, cargue la lista con todas las sesiones activas.
En MySQL shell, use esta consulta:
SHOW PROCESSLIST;
La salida muestra la siguiente información:
Es posible que tenga más entradas en su lista. Tenga en cuenta el Id
del proceso que desea eliminar. El Time
columna le ayuda a determinar los procesos de ejecución más larga. Por lo general, esos son los que desea cancelar primero.
Cómo eliminar el proceso de MySQL
Para eliminar una sesión de MySQL de la lista, utilice KILL
consulta seguida del hilo Id
anotó anteriormente.
KILL 14;
El shell muestra el estado de la consulta y el número de filas afectadas:“Consulta correcta, 0 filas afectadas (0,06 segundos) .” Esta consulta finaliza la conexión a la base de datos, incluidas todas las operaciones asociadas con la conexión.
Recuerde que un usuario debe tener los privilegios adecuados para poder eliminar un proceso.
Cómo eliminar todos los procesos de MySQL para un usuario específico
MySQL no tiene un comando único para eliminar todos los procesos.
Para eliminar todos los procesos de un usuario específico, use CONCAT
para crear un archivo con la lista de hilos y sentencias. En nuestro caso, ingresamos raíz como el usuario. Para especificar otro usuario, reemplace raíz con el nombre de usuario deseado.
SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE user='root' INTO OUTFILE '/tmp/process_list.txt';
Esta consulta creó un archivo llamado process_list.txt . Puedes editar el nombre a tu gusto. Abra el archivo y revise si esos son los procesos que desea eliminar. Cuando esté listo, ingrese:
SOURCE /tmp/process_list.txt;
Puede agregar condiciones a la consulta para reducir la lista de procesos en el archivo de salida. Por ejemplo, agregue time > 1000
al comando para incluir solo los procesos con el valor de tiempo superior a 1000.
SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE user='root' and time>1000 INTO OUTFILE '/tmp/process_list.txt';