mysql事件(event)
【小结】简单案例
SET GLOBAL event_scheduler=1
delimiter $$
create definer = current_user event `test`.`event_table1`
on schedule every 5 second -- 每隔5秒中就向 `table1` 插入当前时间
on completion preserve enable
comment '每隔5秒中就向 `table1` 插入当前时间的事件'
do
begin
insert into `table1` values(null, now());
end$$ delimiter ;
-- 引用自:https://blog.csdn.net/qq_34845394/article/details/90038250
【0】正文
MySQL中的事件(event)是用于执行定时或周期性的任务,类似Linux中的crontab,但是后者只能精确到分钟,事件可以精确到秒。
既然MySQL自身能实现定时性任务,那么就不必在应用层实现了。事件由一个特定的线程来管理的,也就是所谓的事件调度器,但是事件不能直接调用。
MySQL中调度器event_scheduler负责调用事件,也就是由全局变量event_scheduler的状态决定,它默认是OFF, 一般是OFF
show variables like '%event_scheduler%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | OFF |
+-----------------+-------+
打开的方法:SET GLOBAL event_scheduler=1,关闭当然就是赋值为0了。
创建事件的语法:
CREATE
[DEFINER = { user | CURRENT_USER }]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
DO event_body; schedule:
AT timestamp [+ INTERVAL interval] ...
| EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ INTERVAL interval] ...] interval:
quantity { YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND }
event_name:创建的event名字(唯一确定的)。
ON SCHEDULE:计划任务。
schedule: 决定event的执行时间和频率(注意时间一定要是将来的时间,过去的时间会出错),有两种形式AT和EVERY。
[ON COMPLETION [NOT] PRESERVE]: 可选项,默认是ON COMPLETION NOT PRESERVE 即计划任务执行完毕后自动drop该事件;ON COMPLETION PRESERVE则不会drop掉。
[COMMENT ‘comment’] :可选项,comment 用来描述event;相当注释,最大长度64个字节。
[ENABLE | DISABLE] :设定event的状态,默认ENABLE:表示系统尝试执行这个事件。DISABLE:关闭该事情,可以用alter修改
DO event_body: 需要执行的sql语句(可以是复合语句)。
每分钟插入到表中数据:
create event test.event_minute on schedule every 1 minute
do insert into events_list values('event_now', now());
从2017年的给定时间起,每过一年调用一次存储过程ClearHis(2):
CREATE EVENT `e_ClearHis` ON SCHEDULE EVERY 1 YEAR STARTS '2017-03-07 02:00:00'
ON COMPLETION PRESERVE ENABLE
DO call ClearHis(2);
查看当前所在库的事件:
show events;
可以修改事件,不必删除再创建,例如修改第一个例子为30秒间隔:
alter event test.event_minute
on schedule
every 30 second
do insert into events_list values('event_now', now());
修改上面例子为不活动和再次活动
alter event test.event_second disable;
alter event test.event_second enable;
删除事件
DROP EVENT [IF EXISTS] event_name
————————————————
版权声明:本文为CSDN博主「SilentAssassin」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yao5hed/article/details/81059864
mysql事件(event)的更多相关文章
- MySQL 事件EVENT
一.用途用于某一时间执行一个事件或周期性执行一个事件. 二.语法CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] eve ...
- MySQL事件调度器event的使用
Q:假设,有一个需求,希望在某一个时刻系统调用一个begin end执行一下:十分钟以后执行一下begin end.亦或有一个需求,每个多长时间周期性执行begin end.那么这个时候该怎么办呢? ...
- 【周期性执行事件】MySQL事件(Event)&任务调度
1.事件简介 事件(event)是MySQL在相应的时刻调用的过程式数据库对象.一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”. 事件和触发器类似,都是在 ...
- MySQL事件调度器Event Scheduler
我们都知道windows的计划任务和linux的crontab都是用来实现一些周期性的任务和固定时间须要运行的任务. 在mysql5.1之前我们完毕数据库的周期性操作都必须借助这些操作系统实现. 在m ...
- mysql定时任务(event事件)
1.event事件 事件(event)是MySQL在相应的时刻调用的过程式数据库对象.一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器” 事件和触发器类似,都 ...
- mysql定时任务(event事件)
1.事件简介 事件(event)是MySQL在相应的时刻调用的过程式数据库对象.一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”. 事件和触发器类似,都是在 ...
- Mysql中event事件的入门
Mysql中event事件的入门 主要涉及的知识点:mysql的存储过程.mysql的event事件调度. 参考资料: Qiao_Zhi的博客:[周期性执行事件]MySQL事件(Event)& ...
- mysql 事件
经常要周期性的执行某一个命令或者SQL语句.mysql事件,mysql的版本是5.1以上. 首先要查看事件是否开启了, SHOW VARIABLES LIKE 'event_scheduler'; S ...
- mysql中event的用法详解
一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...
随机推荐
- Listview操作
设置 listView1.VirtualMode = true; listView1.RetrieveVirtualItem += ListView1_RetrieveVirtualItem; p ...
- jQuery事件之自定义事件
其实事件的bind和unbind,都是为了自定义事件做准备. 语法: $(selector).trigger(type, data); 作用:在每一个匹配的元素上触发某类事件,它触发的是由bind() ...
- 线程系列3--Java线程同步通信技术
上一篇文章我们讲解了线程间的互斥技术,使用关键字synchronize来实现线程间的互斥技术.根据不同的业务情况,我们可以选择某一种互斥的方法来实现线程间的互斥调用.例如:自定义对象实现互斥(sync ...
- vue 打包部署到服务器上 配置nginx访问
坑一 css,js资源引入不正确 webpack配置文件config/index.js 需要更改: 方法一 当部署到带有文件夹的项目中,这种绝对路径就会出现问题,因为把配置的static文件夹当成了根 ...
- HDX Insight Installation & Configuration
NetScaler Insight Center 11.1 Installation & Configuration NetScaler Insight Center 11.0 Insta ...
- Redis内存碎片率
一. 内存碎片率mem_fragmentation_ratio = used_memory_rss / used_memoryused_memory :Redis使用其分配器分配的内存大小used_m ...
- Mysql的exist与in的区别
如果查询的两个表大小相当,那么用in和exists差别不大. 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in: 例如:表A(小表),表B(大表) 1: s ...
- cygwin下make指令不存在 & cmd也能用make的配置方法
最近做毕设需要使用Mask R-CNN,就配置了相关环境,在安装pycocotools时要make,于是决定用cygwin来做.但在路径下make时出现了问题: bash错误:make指令不存在.一番 ...
- 自定义可拖动的Toast
package com.loaderman.toastdemo; import android.content.Context; import android.graphics.PixelFormat ...
- javascript中ClassName属性的详解与实例
在javascritp中,我们可以通过style属性可以控制元素的样式,从而实现行为层通过DOM的style属性去干预显示层显示的目标,但是这种方法是不好的,而且为了实现通过DOM脚本设置的样式,你不 ...