Cómo eliminar las conexiones inactivas de MySQL

MySQL es un programa de base de datos de código abierto diseñado para ejecutarse en múltiples plataformas. Cada base de datos puede tener conexiones múltiples entrantes. Cuando un programa o usuario se conecta a una fila o una tabla en la base de datos, los datos a los que está accediendo están bloqueados. Esto significa que otro usuario o programa no puede acceder a los mismos datos al mismo tiempo. Los programas se diseñan normalmente para almacenar los datos en caché y evitar el bloqueo de recursos de bases de datos. Sin embargo, puede utilizar una secuencia de comandos para eliminar una conexión inactiva, según sea necesario.

logo de mysql

Paso 1

Abra la línea de comandos de MySQL como usuario administrativo. En Windows, haga clic en el menú Inicio y escriba cmd.exe en el campo Buscar y pulse Intro. En sistemas Linux/Unix, abra una nueva ventana de Terminal y escriba su para acceder a la cuenta root.

Paso 2

Escriba mysql para abrir la línea de comandos de MySQL.

Paso 3

Escriba el siguiente código y pulse la tecla Intro para introducir líneas adicionales y crear un procedimiento:

DELIMITER %%

Esto le permite introducir el texto para una secuencia de comandos, o un procedimiento nuevo en MySQL.

Paso 4

Escriba las siguientes líneas, presione Intro después de cada línea:

CREATE PROCEDURE `killsleepingconnections`()
COMMENT ‘Script to kill sleeping connections’
READS SQL DATA

Estas líneas definen el nombre del procedimiento killsleepingconnections y escriba una descripción para ella. Puede reemplazar el nombre del procedimiento con otro nombre si así lo prefiere.

Paso 5

Escriba las siguientes líneas, presione Intro después de cada línea:

BEGIN

DECLARE end_rows BOOLEAN;
DECLARE no_loops INT DEFAULT 0;
DECLARE rownum INT DEFAULT 0;

Este código inicia la secuencia de comandos y declara las variables para trabajar con la conexión.

Paso 6

Escriba las siguientes líneas, presione Intro después de cada línea:

DECLARE cur CURSOR FOR
SELECT ID
 FROM information_schema.PROCESSLIST PL
WHERE PL.COMMAND=’Sleep’ AND PL.TIME > 120;

DECLARE CONTINUE HANDLER FOR NOT FOUND
SET end_rows = TRUE;

Estas líneas recogen la primera conexión en la base de datos que ha estado inactiva durante 120 segundos o más. Puede volver a definir el período de inactividad, según sea necesario, basta con sustituir 120 con el número de segundos que desea permitir.

Paso 7

Escriba las siguientes líneas, presione Intro después de cada línea:

OPEN ucur;
select FOUND_ROWS() into rownum;

loop: LOOP

IF end_rows THEN
 CLOSE ucur;
 LEAVE loop;
END IF;

END%%
DELIMITER ;

Estas líneas cierran la conexión y finalizan la definición del procedimiento. El nuevo procedimiento se puede llamar desde la interfaz de la línea de comandos o desde el programa de administración gráfica de MySQL utilizando el nombre definido en el inicio del procedimiento.

Paso 8

Escriba lo siguiente para llamar al procedimiento desde la interfaz de la línea de comandos de MySQL:

call killsleepingconnections()

Esto llama el procedimiento creado en los pasos anteriores y cierra las conexiones inactivas por más de dos minutos. El procedimiento se guarda de forma permanente en el servidor de MySQL y se puede llamar en cualquier momento.

No se admiten más comentarios