MySQL 的计划任务(事件 EVERY)测试

目前正在跟进的一个项目中服务端每天会汇集数以十万记的终端发送来的信息,由于心跳机制的原因同一天同一终端的信息会有冗余,为了提高存储的利用率以及后期汇总统计时减少查询时间上的消耗,我们有必要对每一天的数据进行汇总去重。即将每终端每天的心跳记录汇总成一条。 原方案是JAVA 写了一个服务程序每天定时对数据库中记录进行汇总去重。今天在重新测试一个新的方案:mysql 支持触发器、存储过程 和 事件,完全可以利用mysql 自身的EVERY (事件)机制,来让mysql 定时执行任务,指定从某个具体日期时间点开始,每音隔一个指定值开始执行....

比如 从 2018-03-10 10:00:00 开始每隔 1 天执行一次


SET GLOBAL event_scheduler = ON; 

SELECT @@event_scheduler;  


DELIMITER $$
CREATE EVENT SetEVToInvalidStatus_AtNight_0100  
#  HOUR
#  MINUTE
#  DAY
ON SCHEDULE EVERY 1 DAY STARTS TIMESTAMP '2018-03-10 10:00:00'
DO
BEGIN

    #start transaction;
    
    (方法)
    
    #commit;  #提交事务

END  $$
DELIMITER ;
# 停止ALTER EVENT SetEVToInvalidStatus_AtNight_0100 DISABLE;
# 开启alter event SetEVToInvalidStatus_AtNight_0100 enable;

# 查看状态select * from mysql.event