mysql删除旧数据(定期删除表中的过期数据)

建立存储过程,存储过程的名字 dele_src_data

按照update_tiem字段删除过期数据

use test_db; delimiter // create procedure dele_src_data() begin DELETE FROM src_data where TO_DAYS(now())-TO_DAYS(update_time) > 1; end// delimiter ;c定时器

创建定时器

create event del_src_data on schedule EVERY 3 day on completion preserve enable do call dele_src_data();

  1. 上面为整体代码,敲完再写分号
  2. 第一行create event是创建名为del_src_data的事件,注意此处没有括号
  3. 第二行是创建周期定时的规则,本处的意思是每3天执行一次
  4. 第三行on completion preserve enable是表示创建后开始生效。如果是disable就是不马上生效
  5. 第四行call dele_src_data();是该event(事件)的操作内容,表示调用创建的dele_src_data存储过程。

如果需要指定执行开始和结束时间如下:

mysql删除旧数据(定期删除表中的过期数据)(1)

每隔10分钟执行一次,如下:

mysql删除旧数据(定期删除表中的过期数据)(2)

删除定时事件

DROP event dele_src_data

查看定时器事件的任务参数

show events select * from mysql.event;

mysql删除旧数据(定期删除表中的过期数据)(3)

查看定时事件里面的具体代码内容

SHOW create EVENT del_src_data

mysql删除旧数据(定期删除表中的过期数据)(4)

查看事件是否启动

show variables like 'event_scheduler';

如果没有启动,启动事件

set global event_scheduler=on;

永久开启事件:

在my.ini配置文件的[mysqld]部分,加上event_scheduler=ON 即可。

显示事件的运行状态

show processlist;

启动定时事件,停止定时事件

alter event del_src_data on completion preserve enable; alter event del_src_data on completion preserve disable;

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页