MySQL 事件调度器 定时调度

标签: 数据库 MySQL 事件调度器 定时任务 | 发表时间:2014-01-27 11:23 | 作者:coderbee
出处:http://coderbee.net

MySQL 5.1 引入的时间调度器可以作为定时任务调度器,取代系统的cron调度,调度时间可以精确到秒,实时性好。

开启事件调度器

首先查看是否开启了事件调度器: show variables like "event_scheduler";SELECT @@event_scheduler;

开启事件调度器: SET GLOBAL event_scheduler = ON;,这个命令需要具有 SUPER 权限才能执行,可以用 root 用户来执行,说明是作用在整个数据库服务上的,而不单是某个数据库实例。

查看事件的执行情况

SELECT * FROM information_schema.EVENTS;

创建事件

语法:

  CREATE  EVENT  [IF  NOT EXISTS]  event_name
     ON  SCHEDULE  schedule
     [ON  COMPLETION  [NOT]  PRESERVE]
     -- 执行完后是否保留事件,默认为NOT PRESERVE,也就是非周期性任务执行完后删除。
     [ENABLE  |  DISABLE]                 -- 开启或关闭事件
     [COMMENT  'comment']                 --  事件说明
     DO   sql_statement;                  --  要执行的 sql 语句

schedule:
     AT  TIMESTAMP  [+INTERVAL  INTERVAL_VAL]
--  AT  用于在指定时间点执行一次。

     EVERY  INTERVAL  [STARTS  TIMESTAMP]  [END  TIMESTAMP]
--  EVERY  用于每隔指定的时间重复执行。
--  如果没有指定开始时间和结束时间,那么默认的开始时间就是当前结束时间,没有结束时间。


INTERVAL_VAL:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND} 

--   quantity 是数值,花括号里的是的时间单位。

修改事件

  ALTER EVENT event_name
     [ON SCHEDULE schedule]            --  设定调度时间
     [RENAME TO new_event_name]        --  重命名为另一个名字
     [ON COMPLETION [NOT] PRESERVE]    -- 执行完后是否保留事件,默认不保留
     [COMMENT 'comment']               --  事件说明
     [ENABLE | DISABLE]                -- 开启或关闭事件
     [DO sql_statement]                --  要执行的 sql 语句

删除事件

  DROP   EVENT  eventName;

DROP   EVENT  IF  EXISTS  eventName;

代码示例

  --  创建一个测试表
CREATE  TABLE aaa  (timeline  TIMESTAMP)


--  每隔一秒钟插入一条记录,这里没有指定时间范围,就从当前时间开始一直重复调度。
CREATE  EVENT  e_test
     ON  SCHEDULE  EVERY  1  SECOND
     DO  INSERT  INTO  aaa  VALUES(CURRENT_TIMESTAMP);

--   创建事件但不调度执行
CREATE  EVENT  e_test
     ON  SCHEDULE  EVERY  1  SECOND
     DISABLE
     COMMENT  'not enabled, just for later use .'
     DO  INSERT  INTO  aaa  VALUES(CURRENT_TIMESTAMP);


--   修改事件的调度间隔,并使能被调度。
ALTER  EVENT  e_test
     ON  SCHEDULE  EVERY  10  SECOND
     ENABLE;


--   在指定时间点执行一次
CREATE  EVENT  e_test
     ON  SCHEDULE  AT  TIMESTAMP  '2014-01-27 23:59:50'
     DO  TRUNCATE  TABLE  aaa;


--   在指定时间点执行一次,执行完后保留事件。
CREATE  EVENT  e_test
     ON  SCHEDULE  AT  TIMESTAMP  '2014-01-27 23:59:50'
     ON  COMPLETION   PRESERVE
     DO  TRUNCATE  TABLE  aaa;


--  从某个时间范围内周期性地执行任务
CREATE  EVENT  e_test
     ON  SCHEDULE  EVERY  1  DAY
     STARTS  TIMESTAMP  '2014-01-27 23:59:50'
     ENDS  TIMESTAMP  '2014-02-27 23:59:50'
     DO  TRUNCATE  TABLE  aaa;


--   删除事件
DROP   EVENT  e_test;


--   如果存在,删除事件。
DROP   EVENT  IF  EXISTS  e_test;

相关 [mysql 事件 调度] 推荐:

MySQL 事件调度器 定时调度

- - 码蜂笔记
MySQL 5.1 引入的时间调度器可以作为定时任务调度器,取代系统的cron调度,调度时间可以精确到秒,实时性好. 首先查看是否开启了事件调度器: show variables like "event_scheduler"; 或 SELECT @@event_scheduler;. 开启事件调度器: SET GLOBAL event_scheduler = ON;,这个命令需要具有 SUPER 权限才能执行,可以用 root 用户来执行,说明是作用在整个数据库服务上的,而不单是某个数据库实例.

修改numa和io调度优化mysql性能

- 高春辉 - C1G军火库
单机单实例,建议关闭NUMA,关闭的方法有三种:. 1.硬件层,在BIOS中设置关闭;. 2.OS内核,启动时设置numa=off;. 3.可以用numactl命令将内存分配策略修改为interleave(交叉). 修改mysql.server 330行加上numactl. numastat 查看内存分配.

Linux Ksplice,MySQL and Oracle

- Syn - DBA Notes
Oracle 在 7 月份收购了 Ksplice. 使用了 Ksplice 的 Linux 系统,为 Kernel 打补丁无需重启动,做系统维护的朋友应该明白这是一个杀手级特性. 现在该产品已经合并到 Oracle Linux 中. 目前已经有超过 700 家客户,超过 10 万套系统使用了 Ksplice (不知道国内是否已经有用户了.

MySQL Replication 线程

- - CSDN博客推荐文章
Replication 线程. Mysql 的Replication 是一个异步的复制过程,从一个Mysql instace(我们称之为Master)复制到另一个Mysql instance(我们称之Slave). 在Master 与Slave 之间的实现整个复制过程主. 要由三个线程来完成,其中两个线程(Sql 线程和IO 线程)在Slave 端,另外一个线程(IO 线程)在Master 端.

mysql backup 脚本

- - ITeye博客
网上备份脚本很多,但考虑都不周全. 保证创建备份文件只能是创建者跟root可以访问,其他用户没有权限,保证了数据库备份的安全. 上面脚本是负责备份的份数管理,. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

Oracle MySQL Or NoSQL续

- - Sky.Jian 朝阳的天空
接前面一篇,这里再将之前在“中国系统架构师大会”5周年的时候发布的纪念册“IT架构实录”上的一篇文章发出来,也算是前面博文中PPT的一个文字版解读吧. Oracle,MySQL 还是 NoSQL. 随着阿里系的“去IOE”运动在社区的宣传声越来越大,国内正在掀起一股“去xxx”的技术潮. 不仅仅是互联网企业,包括运营商以及金融机构都已经开始加入到这个潮流之中.

mysql优化

- - 数据库 - ITeye博客
公司网站访问量越来越大,MySQL自然成为瓶颈,因此最近我一直在研究 MySQL  的优化,第一步自然想到的是 MySQL 系统参数的优化,作为一个访问量很大的网站(日20万人次以上)的数据库系统,不可能指望 MySQL  默认的系统参数能够让 MySQL运行得非常顺畅. 在Apache, PHP,  MySQL的体系架构中,MySQL对于性能的影响最大,也是关键的核心部分.

MySql动态SQL

- - SQL - 编程语言 - ITeye博客
13.7. 用于预处理语句的SQL语法. MySQL 5.1对服务器一方的预制语句提供支持. 如果您使用合适的客户端编程界面,则这种支持可以发挥在MySQL 4.1中实施的高效客户端/服务器二进制协议的优势. 候选界面包括MySQL C API客户端库(用于C程序)、MySQL Connector/J(用于Java程序)和MySQL Connector/NET.

MySQL 性能

- - 谁主沉浮
这里罗列了一些基本的 MySQL 性能提示,但不是放之四海而皆准,需要根据实际的应用情况而决定. 使用标准化设计(数据库三范式),记住表的联合查询(join)性能不会差. 选择合适的字符集,虽然UTF16无所不能,但需要两倍的存储;UTF8适合各种字符,但比latin1慢,尽可能选用latin1(此条不适合中文).

mysql explain 解析

- - SQL - 编程语言 - ITeye博客
Mysql Explain 详解. 例如: explain select * from t3 where id=3952602;. 二.explain输出解释. | id | select_type | table | type  | possible_keys     | key     | key_len | ref   | rows | Extra |.