Mysql 架构及优化之-定时计划任务

463 查看


概论

mysql计划任务可以定时更新数据库表或者做大文件的汇总表


配置

  • 开启计划任务

SHOW VARIABLES LIKE 'event_scheduler' 查看是否开启 off 表示未开启

set global event_scheduler =1 此次重启之后的mysql器件生效

永久生效

可见已经开启


语法体

create event myevent
on schedule at current_timestamp + interval 1 hour (周期或者时间点)
do
update myschema.mytable set mycol = mycol + 1;     (执行的sql)

周期或者时间点语法

  • 每1秒执行

on schedule every 1 second

  • 10天后执行

on schedule at current_timestamp + interval 10 day

  • 指定日期时间执行

on schedule at timestamp '2016-08-16 00:00:00'

  • 每天凌晨3点执行

on schedule every 1 day
starts '2016-05-18 03:00:00' (设定从第二天凌晨3点开始)

  • 每天定时执行,5天后停止执行

on schedule every 1 day
ends current_timestamp + interval 5 day

  • 5天后开启每天定时清空test表,一个月后停止执行

on schedule every 1 day
starts current_timestamp + interval 5 day
ends current_timestamp + interval 1 month


高级用法

  • 执行多条sql

delimiter | 
create event B on schedule every 1 second 
comment '计划任务注释' 
do      
begin 
insert into smudge.fruit value ('banana'); 
insert into smudge.fruit value ('apple'); 
end |
delimiter ;
  • 临时关闭事件

alter event smudge_insert disable;

  • 临时开启事件

alter event smudge_insert enable;

  • 删除计划任务

drop event smudge_insert;