MySQL数据库之mysql 事件(Event) 总结
小标 2018-09-12 来源 : 阅读 4398 评论 0

摘要:本文主要向大家介绍了MySQL数据库之mysql 事件(Event) 总结 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

本文主要向大家介绍了MySQL数据库之mysql 事件(Event) 总结 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

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中可以直接创建事件

5 开启关闭事件调度器

show variables like ‘%event_scheduler%‘;

通过命令行

SET GLOBAL event_scheduler = ON;  
SET @@global.event_scheduler = ON;  
SET GLOBAL event_scheduler = 1;  
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 线程执行中    

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 5 不喜欢 | 3
看完这篇文章有何感觉?已经有8人表态,62%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved