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.