Skip to main content

ODBC

MySql

Verbindungen bzw. Prozesse, die im Rahmen eines Import oder Exports geschlossen werden, verbleiben im Status "Sleep". Dies führt unter Umständen dazu, dass bei kurz gewählten Ausführungs-Intervallen der Im- bzw. Exporte die maximale Anzahl an offenen Verbindungen zur MySql Datenbank erreicht wird.

Laut der Website https://dba.stackexchange.com/questions/1558/how-long-is-too-long-for-mysql-connections-to-sleep ist die Standardeinstellung, bis solche „Sleep“-Prozesse beendet werden, 8 Stunden (28800 Sekunden). Die dafür zuständigen 2 Einstellungen können allerdings beeinflusst, sprich herabgesetzt werden, so dass die "Sleep"-Prozesse schneller beendet werden. Weitere Informationen dazu entnehmen Sie bitte dem Link.

Eine andere Lösung könnte darin bestehen, eine gespeicherte Prozedur einzurichten, die regelmäßig, z. B. über MySql Event Scheduler ausgeführt wird, um die „Sleep“-Prozesse zu beenden.

Beispiel einer solchen Stored Prozedure, die alle "Sleep"-Prozesse größer der Anzahl 10 beendet

*DELIMITER $$*

*CREATE DEFINER=`root`@`localhost` PROCEDURE
`kill_all_sleep_connections`()*

*BEGIN*

*WHILE (SELECT count(*) as _count from
information_schema.processlist where Command = 'Sleep') > 10 DO*

*set @c := (SELECT concat('KILL ', id, ';') as c from
information_schema.processlist where Command = 'Sleep' limit 1);*

*prepare stmt from @c;*

*execute stmt;*

*END WHILE;*

*END$$*

*DELIMITER;

Manuell im SQL Sheet würde diese mit „call kill_all_sleep_connections()“ ausgeführt