MySQL事件调度器Event Scheduler

Mysql的定时调度功能详解 Mysql的定时调度任务配置,Mysql自身调度配置详解 阅读详情

        数据库中经常有需要定时执行一些相关的任务的需求,在MSSQL中SQL Agnet,在Mysql5.1以前,一般需要通过OS的调度计划(windows的计划任务和linux的crontab)来实现,Mysql5.1以后增加了一个事件调度器,可以实现定时调度的功能。


一、使用权限 

       单独使用event调用SQL语句时,查看和创建需要用户具有event权限,调用该SQL语句时,需要用户具有执行该SQL的权限。Event权限的设置保存在mysql.user表和mysql.db表的Event_priv字段中。
 
       当event和procedure配合使用的时候,查看和创建存储过程需要用户具有create routine权限,调用存储过程执行时需要使用excute权限,存储过程调用具体的SQL语句时,需要用户具有执行该SQL的权限

        某个用户创建的event ,在该用户被删除后,将无法继续执行,event的定义用户名在information_schema.events表的DEFINER字段中。


二、启用Event Scheduler

查看当前是否已启用Event Scheduler的方法:
1)     SHOW VARIABLES LIKE 'event_scheduler';
2)     SELECT @@event_scheduler;
3)     SHOW PROCESSLIST;


启用Event Scheduler的方法如下:

1)     SET GLOBAL event_scheduler = 1 / ON;

2)     SET @@global.event_scheduler = 1 / ON;

键值1或者ON表示开启;0或者OFF表示关闭;

以上命令都是即时生效的,无需重启服务

开启事件计划以后,可以通过SHOWPROCESSLIST\G看到有一个相应的常驻进程:


三、创建Event

创建event的语法如下:

DELIMITER $$
-- SET GLOBAL event_scheduler = ON$$     -- required for event to execute but not create    
CREATE /*[DEFINER = { user | CURRENT_USER }]*/EVENT `event_schema`.`event_name`
ON SCHEDULE
/* uncomment the example below you want to use */
    -- scheduleexample 1: run once
          --  AT 'YYYY-MM-DD HH:MM.SS'/CURRENT_TIMESTAMP { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] }
    -- scheduleexample 2: run at intervals forever after creation
          -- EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
   -- scheduleexample 3: specified start time, end time and interval for execution
          /*EVERY 1  [HOUR|MONTH|WEEK|DAY|MINUTE|...]
           STARTS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1[HOUR|MONTH|WEEK|DAY|MINUTE|...] }
           ENDS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] } */
/*[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']*/
DO
BEGIN
     (sql_statements)
END$$
DELIMITER ;

说明:

event_schema:数据库名称

event_name :event名称(event_schema.event_name 须唯一);

schedule有两种形式 AT和EVERY

AT 时间戳,单次任务

EVERY,用来完成重复的计划任务。

如果指定了[STARTS 时间戳] [ENDS时间戳],则是在指定的限期内,根据INTERVAL重复执行计划任务。

如果未指定则一直重复执行计划任务。

INTERVAL的时间(单位)的数量可以是任意非空(Not Null)的整数式,时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。

提示: 其他的时间单位也是合法的如:QUARTER,WEEK,YEAR_MONTH,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR_MINUTE,HOUR_SECOND,MINUTE_SECOND,但不建议使用这些不标准的时间单位。

[ON COMPLETION [NOT] PRESERVE]:可选项,默认是ON COMPLETION NOT PRESERVE 即计划任务执行完毕后自动drop该事件;ON COMPLETION  PRESERVE则不会drop掉 。

[COMMENT 'comment'] :可选项,comment 用来描述event;相当注释,最大长度64个字节。
[ENABLE | DISABLE] :设定event的状态,默认ENABLE:表示系统尝试执行这个事件, DISABLE:关闭该计划事件。
DO sql_statement: 需要执行的sql语句。


四、启用/禁用/删除事件

ALTER EVENT evnet_name ENABLE;

ALTER EVENT evnet_name DISABLE;

DROP EVENT evnet_name ;

五、使用示例:  

mysql>create table test.t1 (id int,dt datetime);

mysql>insert into test.t1 select 1,now();

例1:

#每分钟往t1表中插入一次记录

DELIMITER $$
CREATE EVENT IF NOT EXISTS e_test1
ON SCHEDULE EVERY 1 MINUTE
ON COMPLETION PRESERVE
DO BEGIN
INSERT INTO t1 SELECT (SELECT MAX(id) FROM test.t1)+1 AS id ,NOW();
END$$
DELIMITER ;


例2:

#2天后删除id小于1000的记录

DELIMITER $$
CREATE EVENT IF NOT EXISTS e_test2
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 10 DAY
ON COMPLETION PRESERVE
DO BEGIN
DELETE FROM test.t1 WHERE id<1000;

END$$

DELIMITER ;


例3:

#每个月1号凌晨1点清空表

DELIMITER $$
CREATE EVENT IF NOT EXISTS e_test3
ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)

ON COMPLETION PRESERVE
DO BEGIN
TRUNCATE TABLE test.t1;

END$$

DELIMITER ;


例4:

#2014年1月1日零点清空表

DELIMITER $$
CREATE EVENT IF NOT EXISTS e_test4
ON SCHEDULE AT ‘2014-01-01 00:00:00’

ON COMPLETION PRESERVE
DO BEGIN
TRUNCATE TABLE test.t1;

END$$

DELIMITER ;



例5:

#2天后开始,1个月后停止

DELIMITER $$
CREATE EVENT IF NOT EXISTS e_test5
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 2 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH

ON COMPLETION PRESERVE
DO BEGIN
TRUNCATE TABLE test.t1;

END$$

DELIMITER ;


Mysql Event 调度历史记录

Qt快速读取Excel文件 网上很多读取方式都是如下形式,太慢了,打开文件+读取文件要6s以上,实在是受不了! QAxObject excel("Excel.Application"); excel.setProperty("Visible", false); QAxObject *work_books = excel.querySubObject("WorkBooks"); work_boo... 阅读详情

相关推荐

告别裸奔MCU!手把手教你用MCP2515+STM32搭建稳定CAN总线通信(附完整代码)

本文详细介绍了如何使用MCP2515与STM32搭建稳定可靠的CAN总线通信系统,适用于汽车电子和工业控制领域。通过硬件架构设计、驱动层实现、数据收发实战及故障排查手册,帮助开发者快速掌握CAN通信技术,提升系统稳定性和开发效率。

weixin_28703489的博客 208

mysql 事件调度器_MySQL事件调度器Event Scheduler

事件调度器是定时触发运行的。在这个角度上也能够称作是"暂时的触发器"。触发器仅仅是针对某个表产生的事件运行一些语句。而事件调度器则是在某一个(间 隔)时间运行一些语句。事件是由一个特定的线程来管理的,也就是所谓的"事件调度器"。启用事件调度器后。拥有SUPER 权限的账户运行 SHOW PROCESSLIST 就能够看到这个线程了。一、事件调度器event_scheduler的开启:mysqlse...

weixin_36261487的博客 3296

MR2数据集实战:5步搞定多模态谣言检测模型训练(附完整代码)

本文详细介绍了如何使用MR2多模态数据集构建高精度谣言检测系统,涵盖环境配置、数据准备、多模态特征工程、模型架构设计、训练调优及部署优化等5个关键步骤。通过双线性融合技术处理文本、图像和网页三模态数据,解决特征对齐和模态冲突等工程难题,并提供完整代码实现和性能优化方案。

weixin_42657024的博客 239

Mysql 事件调度器详解(Event Scheduler)

文章目录1 概述2 语法2.1 创建2.2 查询、修改、删除 1 概述 1. 事件调度器(Event Scheduler):说白了,就是 '定时任务' 2. 前提:event_scheduler 已开启 -- 以下任意一种皆可 set global event_scheduler = 1; set global event_scheduler = ON; 查看:event_scheduler 是否已开启 select @@event_scheduler; show vari

鱼丸丶粗面 1万+

NLP-Beginner 任务一:基于机器学习的文本分类(超详细!!)

NLP-Beginner 任务一:基于机器学习的文本分类传送门一. 介绍1.1 任务简介1.2 数据集1.3 流程介绍二. 特征提取2.1 词袋特征(Bag-of-word)2.2 N元特征 (N-gram)三. 最优化求解3.1 Softmax回归介绍3.2 损失函数3.3 梯度下降3.4 学习率四. 代码及实现4.1 实验设置4.2 结果展示4.3 代码新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、

0oTedo0 9932

从零上手:基于英飞凌TC377的UDE STK 5.0实战调试指南

本文详细介绍了基于英飞凌TC377芯片和UDE STK 5.0的实战调试指南,涵盖硬件连接、工作空间配置、程序烧录、多核调试等关键步骤。特别针对汽车电子领域常见的多核架构调试难题,提供了断点设置、变量监控等实用技巧,帮助开发者快速上手并优化调试效率。

weixin_30839881的博客 683

MySQL之定时任务(Event Scheduler)

在数据库管理中,定期执行某些任务对于维护数据库的健康和性能至关重要。MySQL 提供了一种强大的机制,称为“事件调度器”(Event Scheduler),允许数据库管理员和开发人员自动化这些例行任务。在本文中,我们将深入了解如何在 MySQL 中设置和使用定时任务。

HaSaKing的博客 1711

【Linux】实际项目应该如何完成?--安防监控系统项目的总结

到目前为止我也做个5、6个嵌入式项目,但以往都是从零开始自己做,也就是毫无计划,想到那里做那里,有想法就会去实现,就这样导致我碰到了很多坑,也消耗了我许多时间,当然,不是说这样不好,因为在其中我也得到了一个很好的锻炼与练习,但是这不适用于在工作中去这样做。...

修成真的博客 6727

MySQL 事件调度器(Event Scheduler)的使用

假设我们有一个需求,`每隔5s`,清除表`login_log`中`2年前`的记录,并插入一条当前清理的记录,那么这个该如何实现呢? 实现这个需求的方式有很多种,此处我们通过数据库的 `Event Scheduler `来实现下。

huan的学习记录 1949

PaddleOCR实战:如何在CentOS 8.5上搭建高性能OCR识别环境

本文详细介绍了在CentOS 8.5系统上搭建高性能PaddleOCR识别环境的完整指南。从系统环境准备、PaddlePaddle框架部署到PaddleOCR的定制化安装与性能优化,提供了针对生产环境的解决方案,包括GPU/CPU环境配置、内核参数调优及常见问题排查,帮助用户实现高效OCR识别。

weixin_29223603的博客 349

echarts 饼图(加载进度条动画效果)

1、外侧动画细线效果运动“custom”自定义系列中“renderItem”属性来实现,动态修改起始角度和终止角度。2、圆环使用" pie "类型添加两个data值来画百分比圆环,动态修改data中的值。

God's asylum的博客 1630

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为:...

weixin_32336149的博客 912

从零开始跑通3DGS教程:(五)3DGS训练

本文介绍了在Docker环境中训练3DGS(3D Gaussian Splatting)的方法,属于《从零开始跑通3DGS教程》系列文章的第五部分。主要内容包括:Docker环境准备(基于pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime镜像)、容器内conda环境配置(安装必要依赖和3DGS相关组件)、以及训练命令执行步骤。文章提供了详细的命令行操作流程,帮助读者快速搭建3DGS训练环境。适合在Linux系统、Nvidia GPU环境下使用,完整教程可参考系列文章

诺有缸的高飞鸟的博客 1754

mysql 计划任务关闭_MySQL计划任务(事件调度器)(Event Scheduler)

MySQL5.1.x版本中引入了一项新特性EVENT,顾名思义就是事件、定时任务机制,在指定的时间单元内执行特定的任务,因此今后一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。要查看当前是否已开启事件调度器,可执行如下SQL:SHOW VARIABLES LIKE 'event_scheduler';或SELECT @@event_scheduler;或SHOW PROCES...

weixin_30580403的博客 396

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Mysql事件调度器(Event Scheduler)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34406061的博客 524

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

mysql开启事件调度器(Event Scheduler)

mysql开启事件(启用event_scheduler),定时完成指定sql语句。

寻码启示 2775

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

mysql事件调度定时任务_详解MySQL用事件调度器Event Scheduler创建定时任务

前言事件调度器相当于操作系统中的定时任务(如:Linux中的cron、Window中的计划任务),但MySql的事件调度器可以精确到秒,对于一些实时性要求较高的数据处理非常有用。1. 创建/修改事件(EVENT)在MySql中,创建一个新的调度器使用CREATE EVENT,其语法规则如下:?CREATE[DEFINER = {user |CURRENT_USER }]EVENT[IFNOT EX...

weixin_28683065的博客 363

Mysql Linux安装和事件调度器(Event Scheduler)

MySQL安装 一、下载MySQL安装文件  完全安装MySQL需要下面6个文件:  MySQL-server-community-5.1.26-0.rhel4.i386.rpm  MySQL-client-community-5.1.26-0.rhel4.i386.rpm  MySQL-shared-community-5.1.26-0.rhel4.i386.rpm  M

zzhongcy的专栏 5514

Mysql在5.1+事件调度器(Event Scheduler)

1.在系统管理或者数据库管理中,经常要周期性的执行某一个命令或者SQL语句。 对于linux系统熟悉的人都知道linux的cron计划任务,能很方便地实现定期运行指定命令的功能。 Mysql在5.1以后推出了事件调度器(Event Scheduler) 2.准备 首先要保证你的mysql的版本是5.1以上 event_scheduler为on或者PROCESSLIST中显

sixteen_cicle的博客 475

Mysql创建定时任务主从模式_详解MySQL用事件调度器Event Scheduler创建定时任务

前言事件调度器相当于操作系统中的定时任务(如:Linux中的cron、Window中的计划任务),但MySql的事件调度器可以精确到秒,对于一些实时性要求较高的数据处理非常有用。1. 创建/修改事件(EVENT)在MySql中,创建一个新的调度器使用CREATE EVENT,其语法规则如下:CREATE[DEFINER = { user | CURRENT_USER }]EVENT[IF NOT ...

weixin_30705133的博客 335

MySQL计划任务(事件调度器)(Event Scheduler)

MySQL计划任务(事件调度器)(Event Scheduler) MySQL5.1.x版本中引入了一项新特性EVENT,顾名思义就是事件、定时任务机制,在指定的时间单元内执行特定的任务,因此今后一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。 要查看当前是否已开启事件调度器,可执行如下SQL: SHOW VARIABLES LIKE 'event_sche

zcf396720的专栏 214

MySQL Event Scheduler(事件调度器)

转载 http://www.cppcns.com/shujuku/mysql/57819.html 事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任务调度器,取代部分原先只能用操作系统任务调度器才能完成的定时功能。 一、概述   事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任务调度器,取代部分原先只能用操作系统任务调度器才能完成的定时功>能。例如,Linux 中的 crontabe 只能精确到每分钟执行一次,而 MySQL 的事件调度器则可以实现每

weixin_50140040的博客 484

MySQL 事件(Event)与事件调度器(Event Scheduler)介绍

前言 事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任务调度器,取代部分原先只能用操作系统任务调度器才能完成的定时功能。而且 MySQL 的事件调度器可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下就非常实用了。 事件调度器是定时触发执行的,在这个角度上也可以称作是”临时的触发器”。触发器只是针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间隔

kelvin_yin的专栏 6210

mysql查看执行计划任务_MySQL_MySQL计划任务(事件调度器) Event Scheduler介绍,要查看当前是否已开启事件调 - phpStudy...

MySQL计划任务(事件调度器) Event Scheduler介绍要查看当前是否已开启事件调度器,可执行如下SQL:SHOW VARIABLES LIKE 'event_scheduler';或SELECT @@event_scheduler;或SHOW PROCESSLIST;若显示:+-----------------+-------+| Variable_name | Value |+...

weixin_28911221的博客 536

mysql数据库任务计划_MySQL计划任务(事件调度器) Event Scheduler介绍

要查看当前是否已开启事件调度器,可执行如下SQL:SHOW VARIABLES LIKE 'event_scheduler';或SELECT @@event_scheduler;或SHOW PROCESSLIST;若显示:+-----------------+-------+| Variable_name | Value |+-----------------+-------+| event_...

weixin_36371053的博客 351

mysql创建定时器_详解MySQL用事件调度器Event Scheduler创建定时任务

前言事件调度器相当于操作系统中的定时任务(如:Linux中的cron、Window中的计划任务),但MySql的事件调度器可以精确到秒,对于一些实时性要求较高的数据处理非常有用。1. 创建/修改事件(EVENT)在MySql中,创建一个新的调度器使用CREATE EVENT,其语法规则如下:CREATE[DEFINER = { user | CURRENT_USER }]EVENT[IF NOT ...

weixin_34286711的博客 299
上一篇: Mysql存储过程修改定义者
下一篇: mysql存储过程中 declare 和 set 定义变量的区别
seteor
博客等级 码龄22年 37粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值