MySQL定时器

 

一、基本概念 

mysql5.1版本开始引进event概念。event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发。通过单独或调用存储过程使用,在某一特定的时间点,触发相关的SQL语句或存储过程。 

二、适用范围 

对于每隔一段时间就有固定需求的操作,如创建表,删除数据等操作,可以使用event来处理。

 目前微博4390端口在使用event在每月的1日凌晨1点自动创建下个月需要使用的三张表。

 三、使用权限 

单独使用event调用SQL语句时,查看和创建需要用户具有event权限,调用该SQL语句时,需要用户具有执行该SQL的权限。Event权限的设置保存在mysql.user表和mysql.db表的Event_priv字段中。当event和procedure配合使用的时候,查看和创建存储过程需要用户具有create routine权限,调用存储过程执行时需要使用excute权限,存储过程调用具体的SQL语句时,需要用户具有执行该SQL的权限。

 查看EVENT命令有如下几种: 

(1)查询mysql.event表; 

(2)通过SHOW EVENTS命令; 

(3)通过SHOW FULL EVENTS命令; 

(4)通过查询information_schema.events表 

(5)SHOW CREATE EVENT。 

总之,event的使用频率较低建议使用root用户进行创建和维护。 

四、基本语法 

4.1 开启定时器

 要使event起作用,MySQL的常量GLOBAL event_scheduler必须为on或者是1。

 -- 查看是否开启定时器 

SHOW VARIABLES LIKE 'event_scheduler'; 

-- 开启定时器 0:off 1:on

SET GLOBAL event_scheduler = 1;  

当你设定事件计划为0 或OFF,即关闭事件计划进程的时候,不会有新的事件执行,但现有的正在运行的事件会执行到完毕

       对于我们线上环境来说,使用event时,注意在主库上开启定时器,从库上关闭定时器,event触发所有操作均会记录binlog进行主从同步,从库上开启定时器很可能造成卡库。切换主库后之后记得将新主库上的定时器打开。

 请特别注意!

 4.2 创建事件

CREATE EVENT 的语法如下:

CREATE EVENT

[IF NOT EXISTS] ---------------------------------------------*标注1

event_name -----------------------------------------------------*标注2

 

ON SCHEDULE schedule ------------------------------------*标注3 

[ON COMPLETION [NOT] PRESERVE] -----------------*标注4

[ENABLE | DISABLE] ----------------------------------------*标注5 

[COMMENT 'comment'] --------------------------------------*标注6 

DO sql_statement -----------------------------------------------*标注7

 

http://hi.baidu.com/allense7en/item/b7c10a8de42763cab17154b3

 

http://jackyrong.iteye.com/blog/1329821

 

 

你可能感兴趣的:(MySQL定时器)