从MySQL5.1.6版本以后,MySQL增加了事件调度器(Event Scheduler)功能,可以做定时任务,如(定时删除表数据,数据备份等等)。
事件调度器有时也可以称为临时触发器(temporal triggers),因为事件调度器是基于特定时间周期触发来执行某些任务,而触发器(Triggers)是基于某个表所产生的事件触发的
1、在使用这个功能之前必须确保event_scheduler已开启
SET GLOBAL event_scheduler = 1;
---或者在配置文件my.cnf 中加上 event_scheduler = 1;
或通过
SET GLOBAL event_scheduler = ON;
来开启,也可以直接在启动命令加上“--event_scheduler=1”,例如:
mysqld ... --event_scheduler=1
注:将事件计划关闭:SET GLOBAL event_scheduler = 0;
2、要查看当前是否已开启事件调度器,可执行如下SQL:
SHOW VARIABLES LIKE 'event_scheduler';
或
SELECT @@event_scheduler;
或
SHOW PROCESSLIST;
注:
(1)关闭事件任务:
ALTER
EVENT eventName
ON
COMPLETION PRESERVE DISABLE;
(2)开启事件任务:
ALTER
EVENT eventName
ON
COMPLETION PRESERVE ENABLE;
(3)查看事件任务:SHOW EVENTS ;
一、创建语法:
CREATE EVENT [IFNOT EXISTS] event_name
ONSCHEDULE schedule
[ONCOMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
创建实例 -- 每隔5秒清空TEST表(根据个人需求)
CREATE TABLE TEST(表元素);
CREATE EVENT TEST_TRUNCATE
ON SCHEDULE EVERY 5 SECOND
DO TRUNCATE TEST;
二、修改语法
ALTER EVENT event_name
[ONSCHEDULE schedule]
[RENAME TOnew_event_name]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT 'comment']
[ENABLE | DISABLE]
[DO sql_statement]
修改实例
1) 临时关闭事件
1
ALTER EVENT TEST_TRUNCATE DISABLE;
2) 开启事件
1
ALTER EVENT TEST_TRUNCATE ENABLE;
3) 将每隔5秒清空
TEST_TRUNCATE
表改为5天清空一次:
1
2
ALTER EVENT TEST_TRUNCATE
ON SCHEDULE EVERY 5 DAY;
三、删除语法
DROP EVENT IF EXISTS TEST_TRUNCATE;