1 事件简介

事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”。

事件和触发器类似,都是在某些事情发生的时候启动。当数据库上启动一条语句的时候,触发器就启动了,而事件是根据调度事件来启动的。由于他们彼此相似,所以事件也称为临时性触发器。

事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。

2 事件的优缺点
    2.1 优点

一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。

可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下就非常实用了。

   2.2 缺点
    定时触发,不可以调用。

3 创建事件

一条create event语句创建一个事件。每个事件由两个主要部分组成,第一部分是事件调度(event schedule),表示事件何时启动以及按什么频率启动,第二部分是事件动作(event action ),这是事件启动时执行的代码,事件的动作包含一条SQL语句,它可能是一个简单地insert或者update语句,也可以使一个存储过程或者benin...end语句块,这两种情况允许我们执行多条SQL。

一个事件可以是活动(打开)的或停止(关闭)的,活动意味着事件调度器检查事件动作是否必须调用,停止意味着事件的声明存储在目录中,但调度器不会检查它是否应该调用。在一个事件创建之后,它立即变为活动的,一个活动的事件可以执行一次或者多次。

4 创建事件的语法

循环执行事件

CREATE DEFINER=`root`@`localhost` //用户
EVENT `test` //事件的名称
ON SCHEDULE EVERY 60 MINUTE_SECOND //60秒循环一次 SCHEDULE EVERY '0:0:1' HOUR_SECOND SCHEDULE EVERY '0:1' HOUR_MINUTE (不同的计时方式)
STARTS '2017-11-01 00:00:00.000000' ENDS '2017-11-30 00:00:00.000000' // 开始时间,结束时间
ON COMPLETION PRESERVE ENABLE //过期后禁用事件而不删除
DO
BEGIN //执行的内容
insert into events_list values('event_now', now());
insert into events_list values('event_now1', now());
END

执行多条sql语句时,用用begin...end包起来

只执行一次

CREATE DEFINER=`root`@`localhost`
EVENT `test2`
ON SCHEDULE AT '2017-11-17 00:00:00.000000' // 只执行一次
ON COMPLETION PRESERVE ENABLE
DO insert into events_list values('event_now', now());

 

phpmyadmin中可以直接创建事件

开启关闭事件调度器

show variables like '%event_scheduler%';

通过命令行

  1. SET GLOBAL event_scheduler = ON;
  2. SET @@global.event_scheduler = ON;
  3. SET GLOBAL event_scheduler = 1;
  4. SET @@global.event_scheduler = 1;

通过配置文件my.cnf

  event_scheduler = 1 #或者ON

查看调度器线程

  show processlist;

mysql> show processlist;
+----+-----------------+-----------+------+---------+------+------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------+------+---------+------+------------------------+------------------+
| 2 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 3 | event_scheduler | localhost | NULL | Daemon | 6 | Waiting on empty queue | NULL |
+----+-----------------+-----------+------+---------+------+------------------------+----------------

  event_scheduler 线程执行中

最新文章

  1. Coming
  2. Security8:删除Role 和 User
  3. Let & Const
  4. CentOS7 win7 u盘装双系统 修复系统
  5. C++多继承的观察和7点体会(都是实用派的观点) good
  6. hdu 4612 Warm up 桥缩点
  7. linux -- 启动时启动服务或者执行命令
  8. Keil工程文件的建立、设置与目标文件的获得
  9. 彻底删除mysql的方法(有隐藏文件)
  10. JAX-WS 学习二:基于WEB容器,发布WebService
  11. ThinkPadT440 Ubuntu14.04 RTL8192EE 链接无线网
  12. BZOJ_1098_[POI2007]办公楼biu_链表优化BFS
  13. pgsql sql 统计整理
  14. MYCP作业
  15. linux查看进程已经运行了多长时间
  16. GoldenGate 12.2抽取Oracle 12c多租户配置过程
  17. Docker 搭建Spark 依赖sequenceiq/spark:1.6镜像
  18. ArcGIS案例学习笔记2_2_txtexcel空间可视化和空间插值
  19. openCV基础知识
  20. Python pyQt4/PyQt5 学习笔记4(事件和信号)

热门文章

  1. UVa 437 The Tower of Babylon(DP 最长条件子序列)
  2. PHP性能:序——谈ab(Apache Bench)压力测试工具
  3. 使用ffmpeg下载m3u8流媒体
  4. 嵌入式开发之web服务器---boa移植
  5. angualejs
  6. saltstack内置state模块user
  7. php函数unserialize数据返回false问题分析
  8. android 国际化 设置
  9. ios8 一些运行问题
  10. JSP具体篇——application