MySql定时任务
发布网友
发布时间:2024-10-02 01:07
我来回答
共1个回答
热心网友
时间:2024-10-17 13:30
MySql定时任务通过事件调度器实现,用于执行特定时间周期触发的任务,如数据备份、记录删除或汇总。为了启用定时功能,必须确保事件调度器已开启。
为了操作事件调度器,可以通过以下命令进行查询、开启或关闭:
查询事件调度器状态
使用 `show variables like '%event_scheduler%';`
开启事件调度器
使用 `set global event_scheduler =1;`
关闭事件调度器
使用 `set global event_scheduler =0;`
创建事件涉及`CREATE EVENT`语句,包含事件名称、计划任务时刻表、执行语句等。
计划任务时刻表的设置方式有两种:
1. **间隔**:使用 `every X second` 或 `every X minute` 等。
2. **时间戳**:使用 `AT CURRENT_TIMESTAMP + INTERVAL X SECOND`。
`ON COMPLETION [NOT] PRESERVE`参数决定事件执行完毕后的状态,推荐使用`PRESERVE`以保留事件记录。
通过`show events;`可判断事件是否开启。
举例说明事件的应用:
1. 连接mysql数据库
mysql -h 127.0.0.1 -P 3306 -u root -p
2. 切换到指定数据库
use test;
3. 开启事件调度器
set global event_scheduler =1;
4. 创建`user`表
create table user(id int(4) primary key not null auto_increment,name varchar(16) not null);
创建定时事件执行操作,如定时插入记录、清空表内容或定期备份数据。
示例1:每间隔10秒插入一条记录
create event `myevent1` on schedule every 10 second do insert into user (name) values('cgm');
示例2:在当前时间戳后的10秒插入一条记录
create event `myevent2` ON SCHEDULE AT CURRENT_TIMESTAMP+INTERVAL 10 SECOND DO insert into user (name) values('cgm');
示例3:记录操作与示例2相同,但使用ON COMPLETION PRESERVE,事件执行后不自动删除
create event `myevent2` ON SCHEDULE AT CURRENT_TIMESTAMP+INTERVAL 10 SECOND ON COMPLETION PRESERVE DO insert into user (name) values('cgm');
示例4:定时清理表内容
create event `myevent3` ON SCHEDULE AT TIMESTAMP '2019-07-01 15:42:00' DO TRUNCATE TABLE user;
示例5:执行持续事件,从指定时间开始到结束,每10秒插入一条记录
create event `myevent4` ON SCHEDULE every 10 second STARTS CURRENT_TIMESTAMP+INTERVAL 30 second ENDS CURRENT_TIMESTAMP+INTERVAL 55 second DO insert into user (name) values('cgm');
热心网友
时间:2024-10-17 13:30
MySql定时任务通过事件调度器实现,用于执行特定时间周期触发的任务,如数据备份、记录删除或汇总。为了启用定时功能,必须确保事件调度器已开启。
为了操作事件调度器,可以通过以下命令进行查询、开启或关闭:
查询事件调度器状态
使用 `show variables like '%event_scheduler%';`
开启事件调度器
使用 `set global event_scheduler =1;`
关闭事件调度器
使用 `set global event_scheduler =0;`
创建事件涉及`CREATE EVENT`语句,包含事件名称、计划任务时刻表、执行语句等。
计划任务时刻表的设置方式有两种:
1. **间隔**:使用 `every X second` 或 `every X minute` 等。
2. **时间戳**:使用 `AT CURRENT_TIMESTAMP + INTERVAL X SECOND`。
`ON COMPLETION [NOT] PRESERVE`参数决定事件执行完毕后的状态,推荐使用`PRESERVE`以保留事件记录。
通过`show events;`可判断事件是否开启。
举例说明事件的应用:
1. 连接mysql数据库
mysql -h 127.0.0.1 -P 3306 -u root -p
2. 切换到指定数据库
use test;
3. 开启事件调度器
set global event_scheduler =1;
4. 创建`user`表
create table user(id int(4) primary key not null auto_increment,name varchar(16) not null);
创建定时事件执行操作,如定时插入记录、清空表内容或定期备份数据。
示例1:每间隔10秒插入一条记录
create event `myevent1` on schedule every 10 second do insert into user (name) values('cgm');
示例2:在当前时间戳后的10秒插入一条记录
create event `myevent2` ON SCHEDULE AT CURRENT_TIMESTAMP+INTERVAL 10 SECOND DO insert into user (name) values('cgm');
示例3:记录操作与示例2相同,但使用ON COMPLETION PRESERVE,事件执行后不自动删除
create event `myevent2` ON SCHEDULE AT CURRENT_TIMESTAMP+INTERVAL 10 SECOND ON COMPLETION PRESERVE DO insert into user (name) values('cgm');
示例4:定时清理表内容
create event `myevent3` ON SCHEDULE AT TIMESTAMP '2019-07-01 15:42:00' DO TRUNCATE TABLE user;
示例5:执行持续事件,从指定时间开始到结束,每10秒插入一条记录
create event `myevent4` ON SCHEDULE every 10 second STARTS CURRENT_TIMESTAMP+INTERVAL 30 second ENDS CURRENT_TIMESTAMP+INTERVAL 55 second DO insert into user (name) values('cgm');