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