mysql数据库什么是事件_MySQL数据库之mysql事件
(Event)总结
本⽂主要向⼤家介绍了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语句,也可以使⼀个存储过程或者d语句块,这两种情况允许我们执⾏多条SQL。
⼀个事件可以是活动(打开)的或停⽌(关闭)的,活动意味着事件调度器检查事件动作是否必须调⽤,停⽌意味着事件的声明存储在⽬录中,但调度器不会检查它是否应该调⽤。在⼀个事件创建之后,它⽴即变为活动的,⼀个活动的事件可以执⾏⼀次或者多次。
4 创建事件的语法
循环执⾏事件
CREATE DEFINER=`root`@`localhost` //⽤户
EVENT `test` //事件的名称update是什么
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语句时,⽤⽤d包起来
只执⾏⼀次
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;
通过配置⽂件myf
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数据库频道!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论