MySQL事件调度器Event Scheduler
我们都知道windows的计划任务和linux的crontab都是用来实现一些周期性的任务和固定时间须要运行的任务。
在mysql5.1之前我们完毕数据库的周期性操作都必须借助这些操作系统实现。
在mysql5.1及其之后的版本号添加了计划任务的功能(mysql事件调度器Event
Scheduler)。
事件调度器是定时触发运行的。在这个角度上也能够称作是"暂时的触发器"。
触发器仅仅是针对某个表产生的事件运行一些语句。而事件调度器则是在某一个(间 隔)时间运行一些语句。事件是由一个特定的线程来管理的,也就是所谓的"事件调度器"。
启用事件调度器后。拥有
SUPER 权限的账户运行 SHOW PROCESSLIST 就能够看到这个线程了。
一、事件调度器event_scheduler的开启:
mysqlserver时间调度器的开启是由一个名叫 event_scheduler的全局变量控制的,这个变量默觉得OFF或者是0。mysql>
查看是否开启:
SHOW; //OFF 关闭;ON 开启;
GLOBAL VARIABLES LIKE 'event%'
mysql> SELECT //0 关闭;1 开启。
@@event_scheduler;
要使用事件调度器必须先开启event_scheduler。开启的方法例如以下:
1、SET GLOBAL event_scheduler = ON
2、SET GLOBAL event_scheduler = 1;
3、SET @@global.event_scheduler = ON;
4、SET @@global.event_scheduler = 1;
二、事件调度器event_scheduler的语法:
事件调度器event_scheduler的语法主要包含创建。改动。删除。新建一个event后。假设还未删除,我们能够在mysql的information_schema下的EVENTS表中查到该event。
1、创建event(CREATE)
EVENT
语法:CREATE
EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
说明:event_name :创建的event名字(唯一确定的)。
ON
SCHEDULE:计划任务
schedule: 决定event的运行时间和频率(注意时间一定要是将来的时间。过去的时间会出错)。有两种形式
AT和EVERY
语法:AT timestamp [+
INTERVAL interval]
| EVERY interval [STARTS timestamp]
[ENDStimestamp] :
intervalquantity {YEAR
| QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}(详细说明请參考手冊);
[ON COMPLETION [NOT] PRESERVE]: 可选项。默认是ONON COMPLETION PRESERVE则不会drop掉 。
COMPLETION NOT PRESERVE 即计划任务运行完成后自己主动drop该事件;
[COMMENT 'comment']
:可选项,comment 用来描写叙述event;相当凝视,最大长度64个字节
[ENABLE
| DISABLE] :设定event的状态,默认ENABLE:表示系统尝试运行这个事件,DISABLE:关闭该事情。能够用alter改动
DO sql_statement:
须要运行的sql语句(能够是复合语句)。
注意使用复用语句的时候记得使用分隔符(例3);并且sql语句是由限制,这样的限制跟函数fuction和触发器 trigger中的sql语句限制是一样的。详细是指:LOCK
TABLES; UNLOCK TABLES;CREATE EVENT(#bug 18896);ALTER EVENT(#bug 18896);LOAD DATA;CREATE EVENT 是不可预处理的。CREATE EVENT在存储过程中使用时合法的;CREATE EVENT不能够再嵌入式的embedded mysql数据中使用。
样例:
例1、CREATE EVENT myevent
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
UPDATE myschema.mytable SET mycol = mycol + 1;(从创建開始一小时后运行1次该语句)
例2、CREATE EVENT e_hourly
ON SCHEDULE EVERY 1 HOUR
COMMENT 'Clears out sessions table each hour.'
DO
DELETE FROM site_activity.sessions; (每隔一小时删除session表)
例3:DELIMITER |
CREATE EVENT e
ON SCHEDULE EVERY 5 SECOND
DO
BEGIN
DECLARE v INTEGER;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
SET v = 0;
WHILE v < 5 DO INSERT INTO t1 VALUES (0);
UPDATE t2 SET s1 = s1 + 1; SET v = v + 1;
END WHILE;
END |
DELIMITER ;
2、改动event(ALTER)
EVENT
语法:ALTER
EVENT event_name
[ON SCHEDULE schedule]
[RENAME TO new_event_name]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT 'comment']
[ENABLE | DISABLE]
[DO sql_statement]
说明:语句中的ON,
SCHEDULEON COMPLETION, COMMENT, ENABLE / DISABLE,
and DO 与CREATE EVENT中的全然一致
注意:改动event只对已经存在的event起作用
样例:
1、ALTER
EVENT no_such_event
ON SCHEDULE everu '2:3' DAY_HOUR (result:ERROR
1517 (HY000): Unknown event 'no_such_event' )
2、先创建一个event:
CREATE EVENT myevent
ON SCHEDULE EVERY 6 HOUR
COMMENT 'A sample comment.'
DO
UPDATE myschema.mytable SET mycol = mycol + 1;
改动1:
ALTER EVENT myevent
ON SCHEDULE EVERY 12 HOUR
STARTS CURRENT_TIMESTAMP + 4 HOUR; (将原来的6小时运行一次,改动成4小时后每12小时运行一次)
改动2:
ALTER EVENT myevent DISABLE; (将默认的ENABLE改动为 DISABLE)
2、改动event(ALTER)
EVENT
语法:
DROP EVENT [IF EXISTS] event_name
原文链接:http://blog.163.com/wumingli456@126/blog/static/28896414201082732227944/
MySQL事件调度器Event Scheduler的更多相关文章
- MySQL事件调度器event的使用
Q:假设,有一个需求,希望在某一个时刻系统调用一个begin end执行一下:十分钟以后执行一下begin end.亦或有一个需求,每个多长时间周期性执行begin end.那么这个时候该怎么办呢? ...
- MySQL计划任务(事件调度器)(Event Scheduler)
http://www.cnblogs.com/c840136/articles/2388512.html https://dev.mysql.com/doc/refman/5.7/en/events- ...
- MySQL计划任务(事件调度器)(Event Scheduler)[转]
原文链接: http://www.cnblogs.com/c840136/articles/2388512.html MySQL5.1.x版本中引入了一项新特性EVENT,顾名思义就是事件.定时任务机 ...
- mysql事件调度器定时删除binlog
MySQL5.1.6起Mysql增加了事件调度器(Event Scheduler),可以用做定时执行某些特定任务,来取代原先只能由Linux操作系统的计划任务来执行的工作MySQL的事件调度器可以精确 ...
- mysql事件调度器功能
一.前言 自MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录.对数据进行汇总等等),来取代原先只能由操作系 ...
- mysql 事件调度器
1.mysql事件调度器,也就是计划任务,计划做某事,有两种方式: 2.在某个时间点做某事,AT TIMESTAMP [+ INTERVAL INTERVAL] 某个时间点加上偏移. 3.定时地做某事 ...
- mysql事件调度器
#查看mysql事件调度器是否开启 SHOW VARIABLES WHERE Variable_name = 'event_scheduler'; #开启mysql事件调度器功能 SET GLOBAL ...
- mysql事件调度器使用
--设置事件调度器 开启SET GLOBAL event_scheduler = ON; --查看事件调度器 是否开启 on开 off关SHOW VARIABLES LIKE 'event_sche ...
- Mysql事件调度器学习
在cassandra数据库中,有一个叫做TTL的功能,即插入一条记录时,可以指定某一字段对应的TTL值,比如30s,那么当TTL到达30s后该条记录就会被自动删除.目前MySQL并未直接提供TTL的功 ...
随机推荐
- c/c++中sleep()函数毫秒级的实现
近期看到好多人在问.c/c++中的sleep函数是秒级的,能不能实现毫秒级的呢?当然非常easy.我的写法例如以下 #include <stdio.h> #include <sys/ ...
- 【POJ 2482】 Stars in Your Windows
[题目链接] http://poj.org/problem?id=2482 [算法] 线段树 + 扫描线 [代码] #include <algorithm> #include <bi ...
- Linux就该这么学 20181009(第十二章 SAMBA)
参考链接https://www.linuxprobe.com Samba 跨平台的文件共享 linux-linux linux-windows /etc/samba/smb.conf 里面 []这个名 ...
- Vmware 安装samba
samba是什么samba是什么?能干什么? samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标.SMB是一种Linux. ...
- 12.Matlab神经网络工具箱
概述: 1 人工神经网络介绍 2 人工神经元 3 MATLAB神经网络工具箱 4 感知器神经网络 5 感知器神经网络 5.1 设计实例分析 clear all; close all; P=[ ; ]; ...
- Git 学习笔记(二)
看完了 Git 的介绍后,也是时候动手尝试一下了,不过我们需要先安装好它.它有许多种安装方式,主要分两种,一种是通过编译源代码来安装:另一种是使用为特定平台预编译好的安装包,这里就不做赘述了. 配置 ...
- BZOJ 3667 Pollard-rho &Miller-Rabin
论O(1)快速乘和O(logn)快速乘的差距-. //By SiriusRen #include <cstdio> #include <algorithm> using nam ...
- .NET CORE MVC网站体验
安装SDK https://www.microsoft.com/net/download/core 运行命令行工具 mkdir coremvc cd coremvc dotnet new 文件建立成功 ...
- 清北集训Day6T1(生成函数)
听rqy说可以用生成函数做,感觉比较有意思 我们考虑在DP转移的时候, $5,7,9$这三个数是没有限制的 因此他们出现的次数用01串表示的话就是$1111111111111111......$ $3 ...
- [C#学习笔记之异步编程模式2]BeginInvoke和EndInvoke方法 (转载)
为什么要进行异步回调?众所周知,普通方法运行,是单线程的,如果中途有大型操作(如:读取大文件,大批量操作数据库,网络传输等),都会导致方法阻塞,表现在界面上就是,程序卡或者死掉,界面元素不动了,不响应 ...