您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

MySQL事件调度器详解

2024/3/21 20:18:33发布19次查看
自mysql5.1.6起,增加了一个非常有特色的功能ndash;事件调度器(event scheduler),可以用做定时执行某些特定任务(例如:删除记
自mysql5.1.6起,增加了一个非常有特色的功能–事件调度器(event scheduler),可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等),来取代原先只能由操作系统的计划任务来执行的工作。更值得一提的是mysql的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:linux下的cron或windows下的任务计划)只能精确到每分钟执行一次。对于一些对数据实时性要求比较高的应用(例如:股票、赔率、比分等)就非常适合。
事件调度器有时也可称为临时触发器(temporal triggers),因为事件调度器是基于特定时间周期触发来执行某些任务,而触发器(triggers)是基于某个表所产生的事件触发的,,区别也就在这里。
在使用这个功能之前必须确保event_scheduler已开启,可执行
set global event_scheduler = 1;
或我们可以在配置my.ini文件 中加上 event_scheduler = 1或
set global event_scheduler = on;
来开启,也可以直接在启动命令加上“–event_scheduler=1”,例如:
mysqld ... --event_scheduler=1
要查看当前是否已开启事件调度器,可执行如下sql:
show variables like 'event_scheduler';

select @@event_scheduler;

拥有 super 权限的账户执行 show processlist 就可以看到这个线程了
5.3、定时服务配置
先来看一下它的语法:
create event [if not exists] event_name
    on schedule schedule
    [on completion [not] preserve]
    [enable | disable]
    [comment 'comment']
    do sql_statement;
schedule:
    at timestamp [+ interval interval]
| every interval [starts timestamp] [ends timestamp]
interval:
    quantity {year | quarter | month | day | hour | minute |
              week | second | year_month | day_hour | day_minute |
              day_second | hour_minute | hour_second | minute_second}
5.3.1每秒插入一条记录到数据表
use test;
create table aaa (timeline timestamp);
create event e_test_insert
on schedule every 1 second
do insert into test.aaa values (current_timestamp);
等待3秒钟后,再执行查询看看:
mysql> select * from aaa;
+---------------------+
| timeline            |
+---------------------+
| 2007-07-18 20:44:26 |
| 2007-07-18 20:44:27 |
| 2007-07-18 20:44:28 |
+---------------------+
5.3.2 5秒(天)后清空test表
create event e_test
on schedule at current_timestamp + interval 5 second
do truncate table test.aaa;
create event e_test
on schedule at current_timestamp + interval 5 day
do truncate table test.aaa;
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product