MySql定时任务
自 MySQL5.1.6 起,增加了一个非常有特色的功能-事件调度器(Event Scheduler),可以用 做定时执行某些特定任务(例如:删除记录、对数据进行汇总、数据备份等等),来取代原 先只能由操作系统的计划任务来执行的工作。更值得一提的是 MySQL 的事件调度器可以精 确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux 的 cron 或 Windows 下的任务 计划)只能精确到每分钟执行一次。对于一些对数据实时性要求比较高的应用(例如:股票、 赔率、比分等)就非常适合。 事件调度器有时也可以称为临时触发器(temporal triggers),因为事件调度器是基于特定时 间周期触发来执行某些任务,而触发器(Triggers)是基于某个表所产生的事件触发的,区别也就在这里。
开启event_scheduler
SET GLOBAL event_scheduler = ON;
或者可以在配置 my.cnf 文件 中加上 event_scheduler = 1。
关闭event_scheduler
SET GLOBAL event_scheduler = OFF;
或者可以在配置 my.cnf 文件 中加上 event_scheduler = 0。
查看当前是否已开启事件调度器
SHOW VARIABLES LIKE 'event%';
或者
SELECT @@event_scheduler;
或者
SHOW PROCESSLIST;
定时任务例子
CREATE TABLE t2(timeline TIMESTAMP);
mysql> CREATE EVENT event_test_insert
-> ON SCHEDULE EVERY 1 SECOND
-> DO INSERT t2 VALUE(CURRENT_TIMESTAMP);
mysql> SHOW PROCESSLIST;
+-----+-----------------+-----------+--------+---------+------+-----------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+-----------------+-----------+--------+---------+------+-----------------------------+------------------+
| 161 | clarence | localhost | mytest | Query | 0 | starting | SHOW PROCESSLIST |
| 164 | event_scheduler | localhost | NULL | Daemon | 1 | Waiting for next activation | NULL |
+-----+-----------------+------