欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mysql下自动删除指定时间以前的记录的操作方法

程序员文章站 2022-07-05 17:19:32
关于event:mysql5.1版本开始引进event概念。event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务...

关于event:mysql5.1版本开始引进event概念。event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发。通过单独或调用存储过程使用,在某一特定的时间点,触发相关的sql语句或存储过程。

首先删除2天以前记录的sql语句(webserver_monitormemory为表名,time为时间字段):

delete from webserver_monitormemory where date(time) <= date(date_sub(now(),interval 2 day));

创建存储过程:

delimiter //
create procedure autodel()
  -> begin
  -> delete from webserver_monitormemory where date(time) <= date(date_sub(now(),interval 2 day));
  -> end
  -> //
delimiter ;

创建事件,定制每天执行autodel的存储过程:

create event `event_auto_del_memorydata`  
on schedule every 1 day starts '2017-11-20 00:00:00'  
on completion not preserve enable do call autodel();

开启事件计划(调度器)4种方法。键值1或者on表示开启;0或者off表示关闭:

set global event_scheduler = 1; 
set @@global.event_scheduler = 1; 
set global event_scheduler = on; 
set @@global.event_scheduler = on;

查看当前是否已开启事件计划(调度器)3种方法:

show variables like 'event_scheduler';
select @@event_scheduler;
show processlist;​

事件开启与关闭:

alter event event_auto_del_memorydata on completion preserve enable; //开启某事件
alter event event_auto_del_memorydata on completion preserve disable; //关闭某事件

这个是最简单但是也是最重要的,我们要手动的启动这个定时器,要不然是没法工作的。

alter event event_time_clear_data on 
completion preserve enable;

另外,关闭定时器的代码是:

alter event event_time_clear_data on 
completion preserve disable;

删除存储过程:

drop procedure pro_clear_data;

删除event:

drop event if exists event_time_clear_data1

总结

以上所述是小编给大家介绍的mysql下自动删除指定时间以前的记录的操作方法,希望对大家有所帮助