mysql数据库定时清理数据
一:查看调度,设置调度开启
1.查看调度 SELECT @@event_scheduler
2.设置调度开启:
– 设置方法(开启)
SET @@global.event_scheduler = ON;
– 设置方法(关闭)
SET @@global.event_scheduler = OFF;
二:创建存储过程
DELIMITER $$
USE `db`$$
DROP PROCEDURE IF EXISTS `auto_del_90`$$
CREATE DEFINER=`root`@`%` PROCEDURE `auto_del_90`()
BEGIN
DELETE FROM my_table WHERE CREATE_TIME <= DATE(DATE_SUB(NOW(),INTERVAL 90 DAY));
END$$
DELIMITER ;
三:创建事件
指定时间时间执行,可用户测试存储过程是否有效:
CREATE DEFINER = `root`@`%` EVENT `event_auto_del_90`
ON SCHEDULE AT '2020-11-27 09:46:01'
ON COMPLETION PRESERVE
ENABLE
DO
CALL auto_del_90 ();
创建周期性执行事件(每周执行):
CREATE DEFINER = `root`@`%` EVENT `event_auto_del_90` ON SCHEDULE
EVERY 1 WEEK STARTS '2020-11-27 10:03:06' ON COMPLETION
PRESERVE
ENABLE
DO
CALL auto_del_90 ()
说明:创建事件时有一个参数 PRESERVE
PRESERVE:当事件指定了ends,事件到期后不会drop
NOT PRESERVE :当事件指定了ends,事件到期后会drop该事件