mysql 事件 day hour_Mysql事件调度器(Event Scheduler)

Mysql中的事件调度器Event Scheduler类似于linux下的crontab计划任务的功能,它是由一个特殊的时间调度线程执行的

一、查看当前是否开启了event scheduler三种方法:

1) SHOW VARIABLES LIKE ‘event_scheduler’;

2) SELECT @@event_scheduler;

3) SHOW PROCESSLIST;(是否有State为:Waiting for next activation的进程,User为event_scheduler)

二、启动关闭event scheduler方法:

时间调度器是否开启由全局变量event_scheduler决定,它有三个可以设定的值: – OFF :

事件调度器是关闭的,调度线程并没有运行,并且在SHOW PROCESSLIST中不显示,默认值是OFF – ON

:事件调度器是开启的,调度线程并没有运行,并且执行所有的调度事件,通过SHOW PROCESSLIST可以查看Waiting for next

activation的进程 – DISABLED : 设定这个值表示Event Scheduler是被禁止的,无法在Mysql运行状态下改变其值

注:在Mysql启动时如果在my.cnf设置了event_scheduler=ON(OFF or 1

or 0)时,就不能在运行时修改撑DISABLED,如果设置event_scheduler=DISABLED时,就不能在运行时修改其值为ON (

OFF or 1 or 0)

mysql> SELECT @@event_scheduler;

+-------------------+

| @@event_scheduler |

+-------------------+

| DISABLED |

+-------------------+

1 row in set (0.00 sec)

mysql> SET @@global.event_scheduler = 1;

ERROR 1290 (HY000): The MySQL server is running with the --event-scheduler=DISABLED or --skip-grant-tables option so it cannot execute this statement

在mysql运行时开启Event(4种方法均可):

SET GLOBAL event_scheduler = ON;

SET @@global.event_scheduler = ON;

SET GLOBAL event_scheduler = 1;

SET @@global.event_scheduler = 1;

在mysql运行时关闭Event(4种方法均可):

SET GLOBAL event_scheduler = OFF;

SET @@global.event_scheduler = OFF;

SET GLOBAL event_scheduler = 0;

SET @@global.event_scheduler = 0;

三、创建Event:

语法:

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}

说明:

DEFINER默认是CREATE

EVENT的用户,可以理解为DEFINER=CURRENT_USER,指该event的用户,服务器在执行该事件时,使用该用户来检查权限;如果设置语法:‘user_name’@‘host_name’,如果当前CREATE

EVENT用户没有supser权限,则无法将该event指派给其他用户;如果有super权限,则可以指定任意存在的用户,若不存在,时间执行时报错

IF NOT EXISTS :

如果在同一个schema创建一个已经存在的event_name时不会做任何操作,也不会出错,但会出现warings:该event已经存在;如果不增加此关键词已经存在的话提示ERROR:

1537 (HY000): Event ‘countsum’ already exists

ON SCHEDULE :用于设置什么时间执行,执行的频率及执行多久的问题

AT timestamp :表示在给定的datetime或者timestamp的时间执行一次

+ INTERVAL interval:表示从AT timestamp多久之后执行

EVERY interval :有规律的重复执行

[ENABLE | DISABLE]可是设置该事件创建后状态是否开启或关闭,默认为ENABLE

[COMMENT ‘comment’]可以给该事件加上注释。

event创建时间的3周2天后:

AT CURRENT_TIMESTAMP + INTERVAL 3 WEEK + INTERVAL 2 DAY

2分钟10秒:

+ INTERVAL '2:10' MINUTE_SECOND

每6周:

EVERY 6 WEEK

从现在开始30分钟后每12小时执行一次到从现在到4周后结束执行:

EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK

实例:

前提:创建EVENT的用户需要只少对应schema的EVENT权限

最基本的create event只需要三个部分:

1. create event关键字以及一个event名称

2. on schedule子句

3. do子句

1. 在创建事件myevent1小时后执行,执行一条更新

CREATE EVENT myevent

ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR

DO

UPDATE myschema.mytable SET mycol = mycol + 1;

2.2014年3月20日12点整清空test表:

CREATE EVENT e_test

ON SCHEDULE AT TIMESTAMP '2014-03-20 12:00:00'

DO TRUNCATE TABLE test.aaa;

3.5天后开启每天定时清空test表:

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY

DO TRUNCATE TABLE test.aaa;

4.每天定时清空test表,5天后停止执行

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY

DO TRUNCATE TABLE test.aaa;

5.5天后开启每天定时清空test表,一个月后停止执行:

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY

ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH

DO TRUNCATE TABLE test.aaa;

6.每天定时清空test表(只执行一次,任务完成后就终止该事件):

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

ON COMPLETION NOT PRESERVE

DO TRUNCATE TABLE test.aaa;

[ON COMPLETION [NOT] PRESERVE]可以设置这个事件是执行一次还是持久执行,默认为NOT PRESERVE。

四、修改Event:

ALTER

[DEFINER = { user | CURRENT_USER }]

EVENT event_name

[ON SCHEDULE schedule]

[ON COMPLETION [NOT] PRESERVE]

[RENAME TO new_event_name]

[ENABLE | DISABLE | DISABLE ON SLAVE]

[COMMENT 'comment']

[DO event_body]

说明:

对于任何一个拥有定义在database里面事件的event权限的用户都可以修改event,并且成功需改后,那个用户就会成为此event的definer

实例:

CREATE EVENT myevent

ON SCHEDULE

EVERY 6 HOUR

COMMENT 'A sample comment.'

DO

UPDATE myschema.mytable SET mycol = mycol + 1;

将上面的event从开始之后每6个小时执行一次改为从开始4个小时后每12小时执行一次

只修改schedule

ALTER EVENT myevent

ON SCHEDULE

EVERY 12 HOUR

STARTS CURRENT_TIMESTAMP + INTERVAL 4 HOUR;

同时修改schedule和body

ALTER EVENT myevent

ON SCHEDULE

AT CURRENT_TIMESTAMP + INTERVAL 1 DAY

DO

TRUNCATE TABLE myschema.mytable;

关闭、启动、别名、移动、删除event:

临时关闭某个event

ALTER EVENT myevent DISABLE;

开启某个event

ALTER EVENT myevent ENABLE;

别名某个event

ALTER EVENT olddb.myevent

RENAME TO newdb.myevent;

将myevent从olddb库移动到newdb库

ALTER EVENT olddb.myevent

RENAME TO newdb.myevent;

删除event

DROP EVENT [IF EXISTS] event_name

五、查询Event信息:

Event信息相关表:

information_schema.events

mysql.event

查看事件的创建信息

show create event countsum \G

查看sem库的events信息

USE sem;

SHOW EVENTS \G

SHOW EVENTS FROM sem;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2020年全国儿童青少年总体近视率为52.7%,比上年上升2.5%播

2021年7月13日,国家卫健委召开新闻发布会介绍儿童青少年近视防控和暑期学生健康有关情况。国家卫健委疾控局副局长再那吾东玉山介绍,2020年上半年全民居家抗疫减少了户外活动和放松眼睛的时间,对近视防控工作带来了挑战。为全面评估近视率的情…

精简jdk包_在JDK 12精简数字格式中使用最小分数数字

精简jdk包帖子“ 紧凑数字格式出现在JDK 12中 ”演示了对JDK 12中 NumberFormat的支持,以支持紧凑数字格式 。 该帖子中显示的示例仅使用NumberFormat的实例,这些实例是通过调用NumberFormat的新重载getCompactNumberInstance(-)方法返回的,因…

mysql insert limit_Mysql Limit 调优

建表与插入数据SQL对比基本数据创建表CREATE TABLE student(id int(10) NOT NULL AUTO_INCREMENT,name varchar(25) DEFAULT NULL,age tinyint(2) DEFAULT NULL,live varchar(255) DEFAULT NULL,PRIMARY KEY (id)) ;批量插入1百万条数据DROP PROCEDURE IF EXISTS insert_Stu;DE…

预防近视的方法

推荐的方法里面有角膜塑形镜,也就是OK镜,还有低浓度阿托品、补光仪、离焦软镜、离焦框架眼镜等,阿托品离焦眼镜

spoon java_如何以及为什么使用Spoon分析,生成和转换Java代码

spoon javaSpoon是分析,生成和转换Java代码的工具。 在本文中,我们将看到通过使用以编程方式处理代码的技术可以实现什么。 我认为这些技术不是很为人所知或使用,这很遗憾,因为它们可能非常有用。 谁知道,即使您不想使…

下列支持mysql中文字符_MySQL中文支持问题

0. 本文目的让MySQL支持中文1. 测试环境Windows XP sp2,MySQL Server 5.1,MySQL Administrator 1.2.172. 操作步骤1)修改数据库的默认字符集(开始菜单) - MySQL - MySQL Server 5.1 - MySQL Server Instance Config Wizard:- Reconfigure Ins…

异常(Exception)的学习

1.Throwsable 的两个子类 Exception 和 Error 2.Exception 这是编译期异常,可以捕获处理 3.RuntimeException 表示运行期间的异常,它是 Exception 的子类 4.Error 这是程序错误,不可捕获处理。例如,内存溢出 5.throws 关键字&…

recorder_将Java Flight Recorder与OpenJDK 11一起使用

recorderJava Flight Recorder(JFR)曾经是Oracle JDK的商业附加组件。 由于它最近与Java Mission Control一起开源,因此使用OpenJDK 11的每个人现在都可以免费使用此出色的工具对Java应用程序进行故障排除。 JFR以前是专有解决方案&#xff0…

mysql 酒店管理设计_酒店管理系统的设计与实现(Myeclipse,MySQL)

酒店管理系统的设计与实现(Myeclipse,MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文12000字,程序代码,MySQL数据库)本系统是一个酒店管理系统,以Java Web技术为基础,采用MVC设计模式,利用MyEclipse编程平台结合MySQL数据库&…

可以在循环体内声明局部变量吗?

循环体声明的局部变量,第一次创建后,后面每次循环就不会再创建了。因为 JVM 在执行创建局部变量代码时,会先查询是否存在同名的局部变量,若存在则不会创建。如果有赋值,则直接删除旧的数据,保存新的数据&am…

传一个实体一个string_没想到,一个小小的String还有这么多窍门

1. 看看源码大家都知道, String 被声明为 final,因此它不可被继承。(Integer 等包装类也不能被继承)。我们先来看看 String 的源码。在 Java 8 中,String 内部使用 char 数组存储数据。在 Java 9 之后,String 类的实现…

envoy api 网关_在边缘,作为网关或在网格中构建控制平面以管理Envoy代理的指南...

envoy api 网关最近, Envoy已成为流行的网络组件。 马特克莱因( Matt Klein )在几年前写了一个博客,内容涉及Envoy的动态配置API,以及它如何成为Envoy的采用曲线向右移的部分原因。 他称该博客为“通用数据平面API”。…

d3.js和mysql_如何从mysql数据库中提取数据并使用D3.JS进行可视化?

以下是一个php脚本,您应该可以将其保存在某个文件中(假设您称之为“getdata.php”),可以从您的HTML文件中访问,其中包含D3代码.调用时,它将以json格式从MySQL数据库返回数据(只要数据库服务器不在您的域之外);$username "******";$password "******";$ho…

apigee 安装_APIGEE – API网关简介

apigee 安装在本文中,我想简要介绍一下APIGEE。 APIGEE主要提供现成的以下功能作为api网关。 协议转换 与任何协议(包括SOAP,REST,XML二进制或自定义)进行转换 交通管理 开箱即用的灵活,分布式配额管理…

linux mysql 忘记root密码_Linux MySQL忘记root密码解决方案

在使用MySQL数据库时,由于某些原因长时间没有登陆MySQL,或者由于工作交接完成度不高,导致数据库root登陆密码忘记,如何解决?一、更改my.cnf配置文件1、用命令编辑/etc/my.cnf配置文件,即:vim /e…

Java编程中如何获取项目文件的路径/文件路径

// 获取类加载器 ClassLoader cl JDBCUtils.class.getClassLoader(); // 获取文件的统一资源定位器对象 URL url cl.getResource("db_config.properties"); // 获取文件的路径 String path url.getPath();

inmemory_通过Spring Boot了解H2 InMemory数据库

inmemory介绍 基本上,数据库设置涉及几个步骤,然后才能在应用程序中通过已配置的数据源使用它。 在实际项目实施中,这实际上是必需的。 但是,在某些情况下,我们只需要为某件事完成POC,并且整个数据库设置工…

mysql 查询分组平均数_9、mysql分组查询-----group by 和 having

举例说明:有 Store_Information表之前我们根据这个表,用函数可以算出sales的总和,平均数等如果现在我们需要算出每一间店(store_name)的销售总额(sales)呢?比如:1、los angeles 销售额加起来是 18000san diego…

macOS彻底卸载/删除Microsoft相关的程序

cd /Library/Application\ Support/ # 可以将目录Microsoft整个删除 sudo rm -rf Microsoft # 如果要单独删除微软的自动更新程序,可以进入 cd Microsoft/MAU2.0 # 删除程序文件Microsoft AutoUpdate.app sudo rm -rf Microsoft\ AutoUpdate.app # 进入~/Library/Pr…