mysql定時任務event——清理過期數據


需要刪除數據的表名:t_req_log

 

建表sql

CREATE TABLE `t_req_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`host` varchar(200) DEFAULT NULL,
`time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 

1.查詢是否開啟事件調度

SHOW VARIABLES LIKE 'event_scheduler';

 

2.開啟事件調度

臨時:
SET GLOBAL event_scheduler = 1;

永久:
vim /etc/my.cnf
event_scheduler=ON


3.創建p_del_count存儲過程。
接收傳入參數30並執行刪除數據操作,刪除大於30天的數據。

drop procedure if exists p_del_count; 
create procedure p_del_count(IN `date_inter` INT)  
BEGIN  
delete from t_req_log where (TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(unix_timestamp(time),'%Y%m%d'))) >=date_inter;  
END;

 

4.創建定時任務
從2018-05-15 00:00:00起每一天執行一次p_del_count這個存儲過程,並將參數傳給
p_del_count存儲過程

drop event if exists e_del_t_req_log;
create event e_del_t_req_log 
on schedule every 1 day starts '2018-05-15 00:00:00' 
on completion not preserve enable do call p_del_count (30);

 

5.查看已有定時事件任務
SHOW EVENTS;

 

6.事件的開啟與關閉
開啟某事件:ALTER EVENT e_del_t_req_log ON COMPLETION PRESERVE ENABLE;
關閉某事件:ALTER EVENT e_del_t_req_log ON COMPLETION PRESERVE DISABLE;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM