1.存储过程
create procedure feifei
(
a int,
b int
)
begin
declare c int;
set c = a + b;
select c as sum;
end;
call feifei(1,2);
drop procedure if exists feifei;
CREATE TABLE `timetocid` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`cid` int(11) DEFAULT NULL,
`optime` date DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.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 ;
mysql job
精选 转载上一篇:对于json_lib包的使用
下一篇:mysql job 设置
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
单体JOB向分布式JOB迁移案例
本文记录了如何讲一个单体式的项目一步步改造成分布式job(xxl-job),并如何处理其中遇到的问题及解决思路,
定时任务 spring 初始化 xxljob quartz