MYSQL计划任务介绍

MySQL计划任务  

注意:MySQL只在5.1以上版本支持计划任务

一、创建计划任务:

语法:

CREATE

[DEFINER = { user | CURRENT_USER }]   #计划任务的所有者,一般省略,则为创建者;

#否则需要有相关权限,则可以指定其它用户

    EVENT                                                   #计划任务关键字

    [IF NOT EXISTS]                     #如果不存在则创建,可以省略;否则如果存在,则报错

    event_name                                           #计划任务名称

    ON SCHEDULE schedule             #调度计划,如每20分钟,在几点开始等,参考下面的schedule详解

[ON COMPLETION [NOT] PRESERVE]    #对于执行一次的任务,默认执行完则删除.加此,

#可控制任务结束后计划任务是否删除或保留

[ENABLE | DISABLE | SLAVESIDE_DISABLED]      #指示创建的计划任务是否创建即有效(有

#效则立即执行一次),或禁止执行

    [COMMENT 'comment']                    #关于计划任务的注释,可放入任务的功能简洁

    DO sql_statement;                #任务体,可以是单条语句,也可以是以BEGIN/END包裹的符合语句

 

schedule:                     

AT timestamp [+ INTERVAL interval] #在什么时候开始运行或某时刻之后interval时间

#在运行,用于运行一次的计划任务

 | EVERY interval                      #或者简单的每隔interval时间运行一次

[STARTS timestamp [+ INTERVAL interval]] #STARTS和ENDS配合EVERY关键字,

#指定运行时间段,单独的STARTS指示STARTS以后的时间段

    [ENDS timestamp [+ INTERVAL interval]]

 

interval:

    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |

              WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |

              DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

              #quantity是具体数字,指示多少年或几月或几分钟等

 

二、更改计划任务

语法:

ALTER EVENT

    [DEFINER = { user | CURRENT_USER }] #更改缺省用户

    event_name

    [ON SCHEDULE schedule]          #更改调度时间

    [RENAME TO new_event_name]          #计划任务改名

    [ON COMPLETION [NOT] PRESERVE]      #更改一次运行结束后的行为

    [ENABLE | DISABLE | SLAVESIDE_DISABLED] #更改计划任务状态

    [COMMENT 'comment']               #修改注释

    [DO sql_statement]                     #修改计划执行体

 

三、删除计划任务

语法:

DROP EVENT [IF EXISTS] event_name

四、开启MySQL计划任务功能支持

MySQL中对计划任务的支持是采用线程调度检测计划任务的。要此功能开启计划任务才会执行。查看调度器状态命令如下:

SHOW [FULL] PROCESSLIST\G 

如下是没有开启的状态:

mysql> SHOW FULL PROCESSLIST\G

*************************** 1. row ***************************

     Id: 10

   User: root

   Host: localhost:4823

     db: mysql

Command: Query

   Time: 0

 State: NULL

   Info: SHOW FULL PROCESSLIST

1 row in set (0.00 sec)

 

通过如下全局配置的设置来开启或关闭调度器:

SET GLOBAL event_scheduler = ON/OFF/1/0; --开/关

或SET @@global.event_scheduler = ON/OFF/1/0;

 

五、示例如下:

其中计划任务体内可以是简单语句,也可以调用存储过程

 

delimiter //

drop event if exists createmonsterevent//

create event createmonsterevent

 on schedule every 20 minute

 starts CURRENT_TIMESTAMP + INTERVAL 10 minute

    ENABLE

   COMMENT '刷怪计划任务'

    DO

           begin

                  #20分钟

                  Call createmonster(date_sub(sysdate(),INTERVAL 24 minute),

date_sub(sysdate(),INTERVAL 2 minute));

           end;

//

 

delimiter ;


你可能感兴趣的:(sql,mysql,Date,user,query,任务)