概述
MySQL也有自己的事件调度器,简单地可以理解为linux的crontab job,不过对于SQL应用来说,它的功能更齐全,也更易于维护。个人感觉如果数量创建太多的话,也可能影响DB性能,且不易调试。
MySQL事件调度器的主要内容
总开关
参数event_scheduler为事件调度器的总开关,一般来说设置为ON或者OFF就好,不建议设置成disabled,如果设置为ON,show processlist可看到该线程
创建,修改,查看等语法
关于如何创建,修改event这里不做叙述,创建语法如下,具体的含义可参考下面关于event信息表介绍。也可以参考官网文档链接,http://dev.mysql.com/doc/refman/5.6/en/create-event.html
查看创建好的event,在进入当前db后,show create event xxx/G
event的信息查询和含义
查看某个event的状态信息,可查看mysql.event或者information_schema.events,或者简单地切到当前DB后执行show events; 三者的内容基本一致,information_schema无法做了下数据复制,更改了下列名称和starts时间以便更好的阅读。这里已information_schema.events里的信息为例解释
EVENT_CATALOG:一般都是def,不管
EVENT_SCHEMA:event所在的schema
EVENT_NAME:event的名称
DEFINER:event的定义者,和定义这个event时,默认selectcurrent_user()的结果一致,如果该user有super权限,可以指定为其他用户
TIME_ZONE:event使用的时区,默认是system,建议别做修改
EVENT_BODY:一般都是SQL,不用管
EVENT_DEFINITION:该event的内容,可以是具体的insert等SQL,也可以是一个调用存储过程的操作
EVENT_TYPE:这个参数比较重要,定义的时候指定,有两个值:RECURRING和ONE TIME,RECURRING表示只要符合条件就会重复执行,而ONE TIME只会调用一次
EXECUTE_AT: 针对one-time类型的event有效,如果是RECURRING类型的event一般为NULL,表示该event的预计执行时间
INTERVAL_VALUE:针对RECURRING类型的event有效,表示执行间隔长度
INTERVAL_FIELD:针对RECURRING类型的event有效,表示执行间隔的单位,一般是SECOND,DAY等值,可参考创建语法
SQL_MODE:当前event采用的SQL_MODE
STARTS:针对RECURRING类型的event有效,表示一个event从哪个时间点点开始执行,和one-time的EXECUTE_AT功能类似。为NULL表示一符合条件就开始执行
新闻热点
疑难解答