2331321 发表于 2016-11-8 08:55:55

MySQL创建事件调度器

MySQL中的事件调度器,可以用来执行定时任务。
一、开启事件调度默认是关闭的,开启可执行。查看事件调度器是否开启:
1
2
    SHOW VARIABLES LIKE 'event_scheduler';
SELECT @@event_scheduler;




开启事件调度器
SET GLOBAL event_scheduler=1;
SET GLOBAL event_scheduler=ON;
或者在my.ini文件中加上event_scheduler=1或者在启动命令后加上"-event_scheduler=1"
查看现有的事件调度器
1
   show events;




查看事件调度器的状态
1
   show processlist;




二、创建事件调度器
1
2
3
4
5
6
CREATE EVENT event_name
    ON SCHEDULE schedule
    PRESERVE]
   
   
    DO sql_statement;




schedule:是执行计划,有两个选项,第一是在某一时刻执行,第二是从某时到某时每隔一段时间执行。    AT TIMESTAMP [+ INTERVAL INTERVAL] | EVERY INTERVAL     AT TIMESTAMP [+ INTERVAL INTERVAL]:只在指定的时间点执行;    EVERY INTERVAL :间隔多长时间执行;INTERVAL:时间间隔,可以精确到秒。    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |    WEEK | SECOND | YEAR_MONTHevent_name:是你要创建的事件名称ON COMPLETION PRESERVE:结束后是否保存,默认不保存,一旦执行完,事件就被删除了,因此强烈建议此参数设为 ON COMPLETION PRESERVE。
DO sql_statement:可以是DML语句、DCL语句或者调用存储过程。三、修改事件调度器
1
2
3
4
5
6
ALTER EVENT event_name
   
   
    PRESERVE]
   
   




四、事件调度器的例子例1:1分钟后添加数据
1
2
3
4
5
6
create event if not exists eve_test
    ON SCHEDULE AT current_timestamp() + interval 1 minute
    ON COMPLETION PRESERVE
    do
    insert into test_20161107(t_day)
    values(now());




例2:更改成每隔1分钟添加数据   
1
2
3
4
5
6
alter event eve_test
    on schedule every 1 minute starts now()
    on completion preserve
    enable
    do insert into test_20161107(t_day)
    values(now());




   修改之后使用show events 查看事件调度器的状态;例3:调用存储过程
1
2
3
4
5
alter event eve_test
    on schedule every 1 minute starts now()
    on completion preserve
    enable
    do call proc_test();




五、删除   DROP EVENT event_name;   

页: [1]
查看完整版本: MySQL创建事件调度器