什么是事件调度器?
事件调度器是MYSQL中提供的可作定时操作处理或者周期性操作处理的一个数据库对象,它频繁地被运用到现实的软件开发活动中,它可以帮助我们实现定时或周期性的大批量数据处理,辅助软件功能的实现,是软件功能的一部份。
步骤
1.打开Navicat,选择任意一个数据库。
2. 点击事件,在点击新建事件。
3.写入需要周期执行的SQL语句。
定义者:指明该event的用户服务器在执行该事件时,使用该用户来检查权限。默认用户为当前用户,即current_user。
状态:ENABLE表示该event创建成功后,一旦满足时间条件就会被执行;DISABLE表示该event被关闭,不会被执行。
ON COMPLEMENT:PRESERVE表示该事件过期之后仍会被保留;NOT PRESERVE表示该event过期之后就删除。
4.定义该event是单次执行事件,还是需要重复执行的事件。
若在未来的某个时间执行一个单次事件:
若在间隔一个月之后的23:00执行一个单次事件:
若需要每周重复执行一个事件,起始时间是创建成功的时间:
也可为这个重复执行事件指定开始事件和结束事件,还可加上间隔。
5.可为该event添加注释,也可不添加。
6.进行SQL语句预览,并保存该event,保存时为事件取名。
7.事件只能在服务器启动并开启事件计划时才能处理。
验证是否创建成功
show events;
事件调度器的创建语法
CREATE
[DEFINER = { user | CURRENT_USER }] #定义者
EVENT
[IF NOT EXISTS]
event_name #该事件的名字
ON SCHEDULE schedule #指定何时执行该事件
[ON COMPLETION [NOT] PRESERVE] #是否长期保存该事件
[ENABLE | DISABLE | DISABLE ON SLAVE] #创建成功后是否立即生效
[COMMENT 'comment'] #注释
DO event_body; #定义通过该事件来执行的操作内容
查看事件调度器是否开启
show variables like ‘event_scheduler’;
设置开启事件调度器
set global event_scheduler=on; 或 set global event_scheduler=1;
设置关闭事件调度器
set global event_scheduler=off; 或 set global event_scheduler=0;
禁用事件调度器
如果调度器不再使用,可以禁用(disable)或删除(drop)
禁用/启用:
ALTER EVENT 调度器名称 DISABLE/ ENABLE
删除:
DROP EVENT 调度器名称 – 删除
MYSQL事件调度器的测试点
1.关注执行的SQL逻辑和执行结果是否正确
2.关注执行的时间点是否与计划的一致
3.事件调度器一般与存储过程搭配使用,常用来作大量数据处理,
所以还需要关注执行的效率是否高效(也就是是否有性能问题)