mysql 通过事件可以实现定时任务 :

1、 检查你的MYSQL是否开了这个功能

show variables like "%scheduler" //注意 最后是er

mysql event 学习-LMLPHP

2、  打开你的MYSQL的计划任务功能

使用这个功能之前必须确保event_scheduler已开启,可执行

SET GLOBAL event_scheduler = 1;
或SET GLOBAL event_scheduler = ON;
来开启,也可以直接在启动命令加上 “–event_scheduler=1”,例如:mysqld ... --event_scheduler=1

mysql event 学习-LMLPHP

my.ini or my.cnf 中的

mysql event 学习-LMLPHP

[mysqld]
添加 event_scheduler=ON

mysql event 学习-LMLPHP

二、事件基本操作

【删除事件】:

DROP EVENT [IF EXISTS] event_name

【关闭事件】

  ALTER EVENT event_name ON  COMPLETION PRESERVE DISABLE;

mysql event 学习-LMLPHP

【关闭事件】

ALTER EVENT event_name ON  COMPLETION PRESERVE ENABLE;

mysql event 学习-LMLPHP

三、试验

1) 每一秒插入一条数据到数据库里面

use test;

CREATE TABLE `aaa` (
`timeline` varchar(25) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

mysql event 学习-LMLPHP

查看有哪些事件?

mysql event 学习-LMLPHP

查看该event创建的详情

mysql event 学习-LMLPHP

查看事件执行效果

mysql event 学习-LMLPHP

2) 一段时间后执行

15秒后清空表aaa

mysql event 学习-LMLPHP

每天定时清空test表:

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
DO TRUNCATE TABLE test.aaa;

当前时间起 过15秒后 每一秒插入一条数据到数据库

truncate table aaa;
drop EVENT if EXISTS d;
drop EVENT if EXISTS a;
CREATE EVENT a ON SCHEDULE
every 1 SECOND
STARTS CURRENT_TIMESTAMP + INTERVAL 15 SECOND
DO INSERT into aaa values(now());

show events;
show variables like "%scheduler";

mysql event 学习-LMLPHP

定时插入一条数据,十五秒后停止

truncate table aaa;
drop EVENT if EXISTS a;
CREATE EVENT a ON SCHEDULE
EVERY 1 second
ENDS CURRENT_TIMESTAMP + INTERVAL 15 SECOND
COMMENT "test"
DO INSERT into aaa values(now());

show events;
show variables like "%scheduler";

mysql event 学习-LMLPHP

mysql event 学习-LMLPHP

05-22 01:00