salix/db/routines/util/procedures/slowLog_prune.sql

32 lines
910 B
MySQL
Raw Normal View History

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`slowLog_prune`()
BEGIN
/**
* Prunes MySQL slow query log table deleting all records older than one week.
*/
DECLARE vSlowQueryLog INT DEFAULT @@slow_query_log;
DECLARE vSqlLogBin INT DEFAULT @@SESSION.sql_log_bin;
DECLARE vLogExists BOOL;
SET sql_log_bin = OFF;
SET GLOBAL slow_query_log = OFF;
SELECT COUNT(*) INTO vLogExists
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mysql' AND TABLE_NAME = 'slow_log';
IF vLogExists THEN
DROP TEMPORARY TABLE IF EXISTS `mysql`.`slow_log_temp`;
RENAME TABLE `mysql`.`slow_log` TO `mysql`.`slow_log_temp`;
END IF;
DELETE FROM `mysql`.`slow_log_temp`
WHERE start_time < TIMESTAMPADD(WEEK, -1, util.VN_NOW());
RENAME TABLE `mysql`.`slow_log_temp` TO `mysql`.`slow_log`;
SET GLOBAL slow_query_log = vSlowQueryLog;
SET sql_log_bin = vSqlLogBin;
END$$
DELIMITER ;