mysql任务计划(转)
2008-06-05 13:59
302 查看
MySQL的功能越来越强大了,逐渐在想大型商业数据库靠拢了,这不,5.1的版本已然支持视图、触发器、job等功能。
下面简单介绍下我所使用的MySQL的job功能(也就是计划任务,Oracle中称job):
一、创建计划任务:
语法:
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 ;
引用自:http://hi.baidu.com/redberries/blog/item/801cc4f2b3c6c810b17ec55e.html
下面简单介绍下我所使用的MySQL的job功能(也就是计划任务,Oracle中称job):
一、创建计划任务:
语法:
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 ;
引用自:http://hi.baidu.com/redberries/blog/item/801cc4f2b3c6c810b17ec55e.html
相关文章推荐
- MySQL计划任务(事件调度器)(Event Scheduler)
- MySQL架构优化实战系列3:定时计划任务与表分区
- WINDOWS计划任务设置MYSQL自动备份
- MySQL 事件(event)计划任务
- 使用MySQL计划任务 二
- 解决mysql添加任务计划作业时,报‘事件计划已关闭。事件只能在服务器启动并开启事件计划时才能处理。’
- MySQL计划任务(事件调度器) Event Scheduler介绍
- mysql自带计划任务
- mysql计划任务
- MySql事件计划任务
- MySQL计划任务之三
- MySQL CREATE EVENT创建任务计划 定时执行任务(转)
- MySQL计划任务(事件调度器)(Event Scheduler)
- (转)用mysql的存储过程和event来做计划任务
- mysql计划任务(轮询执行脚本)
- MySQL Event计划任务刷慢日志
- 使用MySQL计划任务
- MySQL的计划任务创建
- MySql 计划任务