mysql 事件

MySql事件 今天碰到了要求系统自动删除一个月之前的日志记录的需求,日志存在mysql数据库表中,之前的做法都是利用linux crontab定时任务去完成,今天突然发现了mysql的事件机制,便记录下来,分享给大家和自己。 Mysql事件学习 在系统管理或者数据库管理中,经常要周期性的执行某一个命令或者SQL语句。对于linux系统熟悉的人都知道linux的cron计划任务,能很方便地实现定期运行指定 阅读详情
在使用这个功能之前必须确保event_scheduler已开启,可执行
SET GLOBAL event_scheduler = 1;
 ---或我们可以在配置my.ini文件 中加上 event_scheduler = 1
或
SET GLOBAL event_scheduler = ON;
来开启,也可以直接在启动命令加上“–event_scheduler=1”,例如:
mysqld ... --event_scheduler=1
要查看当前是否已开启事件调度器,可执行如下SQL:
SHOW VARIABLES LIKE 'event_scheduler';
或
SELECT @@event_scheduler;
或
SHOW PROCESSLIST;

二、创建事件(CREATE EVENT)

先来看一下它的语法:
CREATE EVENT [IF NOT EXISTS] event_name
 ON SCHEDULE schedule
 [ON COMPLETION [NOT] PRESERVE]
 [ENABLE | DISABLE]
 [COMMENT 'comment']
 DO sql_statement;
 
schedule:
 AT TIMESTAMP [+ INTERVAL INTERVAL]
 | EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
 
INTERVAL:
 quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
 WEEK | SECOND | YEAR_MONTH 
1) 首先来看一个简单的例子来演示每秒插入一条记录到数据表
USE test;
CREATE TABLE aaa (timeline TIMESTAMP);
CREATE EVENT e_test_insert
 ON SCHEDULE EVERY 1 SECOND 
 DO INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);
等待3秒钟后,再执行查询看看:
mysql> SELECT * FROM aaa;
+---------------------+ 
| timeline | 
+---------------------+ 
| 2007-07-18 20:44:26 | 
| 2007-07-18 20:44:27 | 
| 2007-07-18 20:44:28 | 
+---------------------+
2) 5天后清空test表:
CREATE EVENT e_test
 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
 DO TRUNCATE TABLE test.aaa;
3) 2007年7月20日12点整清空test表:
CREATE EVENT e_test
 ON SCHEDULE AT TIMESTAMP '2007-07-20 12:00:00'
 DO TRUNCATE TABLE test.aaa;
4) 每天定时清空test表:
CREATE EVENT e_test
 ON SCHEDULE EVERY 1 DAY
 DO TRUNCATE TABLE test.aaa;
5) 5天后开启每天定时清空test表:
CREATE EVENT e_test
 ON SCHEDULE EVERY 1 DAY
 STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
 DO TRUNCATE TABLE test.aaa;
6) 每天定时清空test表,5天后停止执行:
CREATE EVENT e_test
 ON SCHEDULE EVERY 1 DAY
 ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY
 DO TRUNCATE TABLE test.aaa;
7) 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;
[ON COMPLETION [NOT] PRESERVE]可以设置这个事件是执行一次还是持久执行,默认为NOT PRESERVE。
8) 每天定时清空test表(只执行一次,任务完成后就终止该事件):
CREATE EVENT e_test
 ON SCHEDULE EVERY 1 DAY
 ON COMPLETION NOT PRESERVE
 DO TRUNCATE TABLE test.aaa;
[ENABLE | DISABLE]可是设置该事件创建后状态是否开启或关闭,默认为ENABLE。
[COMMENT ‘comment’]可以给该事件加上注释。

三、修改事件(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]
1) 临时关闭事件
ALTER EVENT e_test DISABLE;
2) 开启事件
ALTER EVENT e_test ENABLE;
3) 将每天清空test表改为5天清空一次:
ALTER EVENT e_test

四、删除事件(DROP EVENT)

语法很简单,如下所示:
DROP EVENT [IF EXISTS] event_name
例如删除前面创建的e_test事件
DROP EVENT e_test;
当然前提是这个事件存在,否则会产生ERROR 1513 (HY000): Unknown event错误,因此最好加上IF EXISTS
DROP EVENT IF EXISTS e_test;
注意:如果你将event执行了Alter event event_name disable.那么当你重新启动mysql服务
器后,该event将被删除(测试版本:5.1.30)

应用案例

本案例是利用 event scheduler 的特性,每秒钟调用一次存储过程,用于判断 SLAVE 是否正常运行,如果发现 SLAVE 关闭了,忽略 0 次错误,然后重新启动 SLAVE。
  • 首先创建存储过程
    delimiter //
     create procedure `Slave_Monitor`()
     begin
     SELECT VARIABLE_VALUE INTO @SLAVE_STATUS
     FROM information_schema.GLOBAL_STATUS
     WHERE VARIABLE_NAME='SLAVE_RUNNING';
     IF ('ON' != @SLAVE_STATUS) THEN
     SET GLOBAL SQL_SLAVE_SKIP_COUNTER=0;
     SLAVE START;
     END IF;
     end; //
     delimiter ; 
    由于存储过程中无法调用类似 SHOW SLAVE STATUS 这样的语句,因此无法得到确切的复制错误信息和错误代码,不能进一步的处理 SLAVE 停止的各种情况。
  • 接着,创建任务
    CREATE EVENT IF NOT EXISTS `Slave_Monitor`
     ON SCHEDULE EVERY 5 SECOND
     ON COMPLETION PRESERVE
     DO
     CALL Slave_Monitor();
     
    创建了一个任务,每 5秒钟执行一次,任务结束后依旧保留该任务,而不是删除。当然了,在本例中的任务不会结束,除非将它手动禁止了。
  • 如果在运行中想要临时关闭一下某个任务,执行 ALTER EVENT 语句即可:
     (root:localhost:)test> alter event `Slave_Monitor` ON
     COMPLETION PRESERVE DISABLE;
     (root:localhost:)test> alter event `Slave_Monitor` ON
     COMPLETION PRESERVE ENABLE;
单目标跟踪算法及其复现过程---SiamFC(一) 在test.py文件中,就是利用训练出来的模型进行测试,需要更改预训练模型的路径,测试集的路径,以OTB100为例,最后输出的是对每一帧目标位置的坐标点。代码如下:首先需要下载got10k官方库,只需要在终端输入(注意:在终端安装各种库的时候不能使用网络代理),在环境已经配置到的情况下,只需要该其中的路径和就可以运行。这个系列博客仅为了记录各目标跟踪算法的复现(大多为跑通大佬们实现的代码),包括其中出现的很多问题和错误,学到的新知识等等。解决,而且只使用在线的方法,限制了他们可以学习的模型的丰富性。 阅读详情

相关推荐

STM32 ST-LINK Utility 无法烧录程序的解决方法

当你打开STM32 ST-LINK Utility,硬件连接好st-link V2,打开了要烧写的文件,点那个Program verify烧录时, 如果出错了: Programming error @ 0x08000000! 我的方法是: 点你想要烧录那个HEX文件的小格,复制 然后去到你前面的文件的格子里,点粘贴: 成功! ...

wocute的博客 9521

mysql事件的使用-开启与关闭事件

首先要查看事件是否开启了, SHOW VARIABLES LIKE 'event_scheduler'; SELECT @@event_scheduler; SHOW PROCESSLIST; 之星sql 我们先开启mysql事件,1,通过动态参数修改:SET GLOBAL event_scheduler = ON;注意:还是要在my.cnf中添加event_s...

诚的博客 4609

手把手教你设计STM32的JTAG电路:从原理图到PCB布局(含JLINK连接详解)

本文详细介绍了STM32的JTAG电路设计全流程,从核心原理、接口规范到PCB布局布线技巧,特别包含JLINK调试器的连接与配置方法。通过信号滤波、上拉配置和防反接保护等关键设计要点,帮助开发者构建稳定可靠的JTAG调试环境,提升嵌入式开发效率。

weixin_29159441的博客 388

mysql 事件使用

mysql 事件使用

qq_37570710的博客 3104

STM32CubeMx配置串口使用printf函数打印数据(HAL库开发)

HAL库开发串口,打印printf

m0_58832575的博客 6286

ROS2仿真抓取分拣案例,使用myCobot 280机械臂结合ROS2系统搭建机械分拣站

本案例展示了如何利用myCobot 280 urdf模型构建一个对象分类站,并在ROS2 jazzy中完成运动规划。

m0_71627844的博客 2125

Mysql 定时任务

1、检查数据库事件是否开启 SELECT @@event_scheduler; SHOW VARIABLES LIKE 'event_scheduler'; SELECT @@event_scheduler; 2、开启任务(事件) set global event_scheduler=1; SET GLOBAL event_scheduler = ON; 在my.cnf中的[...

Keith003的博客 894

海洋与地质地理信息数据下载网站汇总集锦

各种海洋与地质地理信息数据集合

qq_36980284的博客 1267

mysql的定时任务管理

CREATE EVENT 事件名称 ON SCHEDULE EVERY 间隔时间 DO 具体执行的SQL任务。ALTER EVENT 事件名称 ON COMPLETION PRESERVE DISABLE;例子如下: 每隔10秒更新一次表中指定项的内容。ON SCHEDULE EVERY 间隔时间。若没有开启,则使用如下命令开启定时器。ALTER EVENT 事件名称。(1) 关闭指定事件的定时任务。具体执行的SQL任务。查看定时任务是否开启。关闭(开启)定时任务。

beyond丿灬的博客 788

171、运动控制中的标定:摩擦力与死区补偿标定

摘要(149字) 运动控制系统中的摩擦力与死区补偿是提升精度的关键。摩擦力分为静摩擦、库仑摩擦和粘滞摩擦,其中Stribeck效应是低速抖动的主因;死区则表现为控制信号的无效区间。有效标定方法包括恒速测试(摩擦力)和斜坡响应法(死区)。补偿策略需采用分段前馈和动态调整,避免过度补偿导致振荡。实践中要注意机械状态检查、补偿量限幅,并定期重新标定。硬件升级配合算法补偿才能实现最优控制,标定工作应优先于PID参数调整。

m0_50546716的博客 226

输入过欠压保护电路分析

输入过欠压保护电路仿真分析

HW-BASE的博客 6899

MySQL事件

事件介绍 事件调度 查询事件调度状态 开关事件调度(临时) 开关事件调度(永久) 事件使用 创建事件 语法子句分析 执行计划子句 事件主体子句 查询事件 修改事件 删除事件

骑个小蜗牛的博客 1万+

基于STM32L4XX、HAL库的CH182H1以太网收发器(PHY)驱动程序设计

define PHY_REG_PHYSCR 0x12 // PHY特殊控制寄存器。#define PHY_REG_PHYSTS 0x10 // PHY状态寄存器。#define PHY_REG_PHYIDR 0x11 // PHY标识寄存器。#define PHY_REG_ID1 0x02 // PHY标识符1。#define PHY_REG_ID2 0x03 // PHY标识符2。

zhusl6688的博客 401

mysql删除事件的使用_使用MySQL事件

mysql删除事件的使用MySQL events were added in MySQL 5.1.6 and offer an alternative to scheduled tasks and cron jobs. Events can be used to create backups, delete stale records, aggregate data for reports, an...

culi3118的博客 1268

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Statistics and Machine Learning Toolbox

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

mysql 的事件_MySQL事件简介

备注:测试数据库版本为MySQL 8.0这个blog我们来聊聊MySQL事件。MySQL的事件功能同Oracle里面的JOB,作为定时任务使用。一.语法相关创建事件语法:CREATE[DEFINER = user]EVENT[IF NOT EXISTS]event_nameON SCHEDULE schedule[ON COMPLETION [NOT] PRESERVE][ENABLE | DIS...

weixin_26798991的博客 2258

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

MySQL 事件

MySQL 事件(Event)事件是根据时间表运行的任务,类似于 Unix crontab 和 Windows 定时任务。一个事件可调用一次,也可周期性地启动。它由一个特定的线程来管理,也就是所谓的事件调度器(Event Scheduler)。MySQL 的事件调度器可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下非常实用。事件和触发器类似,都是在某些事情发生的时候启动。MySQL 事件有时候也称为“时间触发器”,因为它们是基于特定时间点触发的程序。

Doublelv 的博客专栏。 1565

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

MySQL事件功能简介

MySQL 事件调度器是一种内置的定时任务机制,允许用户在指定的时间或周期内自动执行 SQL 语句。它类似于操作系统中的 cron 作业或 Windows 任务计划程序,但专门用于数据库内部的任务管理。定期数据备份:自动将重要数据备份到指定表或文件中。数据清理:定时删除过期或不再需要的数据,保持数据库的整洁。报告生成:按周期生成业务报表,方便分析和决策。自动化任务:执行重复性高、易出错的手动操作,提高工作效率和准确性。

CoderJia的学习之路 1850

mysql事件每天执行一次_MySQL-事件

MySQL事件是根据指定时间表执行的任务。 因此MySQL事件称为计划事件。MySQL事件是包含一个或多个SQL语句的命名对象。 它们存储在数据库中并以一个或多个时间间隔执行。例如可以创建一个事件来优化数据库中的所有表,该事件在每个星期日的5:00 AM运行。MySQL事件也称为“时间触发器”,因为它们是由时间触发的,而不是由DML事件(如常规触发器)触发的。 MySQL事件类似于Linux上的c...

weixin_29952383的博客 3117

mysql 事件是什么意思_MySQL-事件

MySQL事件是根据指定时间表执行的任务。 因此MySQL事件称为计划事件。MySQL事件是包含一个或多个SQL语句的命名对象。 它们存储在数据库中并以一个或多个时间间隔执行。例如可以创建一个事件来优化数据库中的所有表,该事件在每个星期日的5:00 AM运行。MySQL事件也称为“时间触发器”,因为它们是由时间触发的,而不是由DML事件(如常规触发器)触发的。 MySQL事件类似于Linux上的c...

weixin_30831261的博客 968

mysql 事件_MySQL-事件

MySQL事件是根据指定时间表执行的任务。 因此MySQL事件称为计划事件。MySQL事件是包含一个或多个SQL语句的命名对象。 它们存储在数据库中并以一个或多个时间间隔执行。例如可以创建一个事件来优化数据库中的所有表,该事件在每个星期日的5:00 AM运行。MySQL事件也称为“时间触发器”,因为它们是由时间触发的,而不是由DML事件(如常规触发器)触发的。 MySQL事件类似于Linux上的c...

weixin_39769183的博客 200

MySQL事件是什么

摘要: MySQL事件是5.1.6版本引入的定时任务机制,支持秒级精度的单次或周期性SQL执行,由内置调度器管理。与触发器不同,事件基于时间触发,适用于数据清理、统计、备份等自动化场景。核心功能包括定时执行、权限控制,8.0版本新增条件触发、亚秒级调度等特性。使用时需注意启用调度器(SET GLOBAL event_scheduler=ON)、合理设计执行频率,并通过SHOW EVENTS监控状态。高频任务建议优化SQL索引并限制执行时间,避免性能问题。MySQL事件能有效替代外部脚本,实现数据库层面的自动

得塔云的博客 1127

MySQL中的事件

文章目录事件是什么?使用开启定时器语法创建事件查看事件启用和禁用删除事件实践简单案例参考 事件是什么? MySQL5.1版本开始引进event概念,MySQL 中的事件(event:时间触发器)是用于执行定时或周期性的任务,类似Linux中的crontab,但是后者只能精确到分钟,事件可以精确到秒。通过单独或调用存储过程使用,在某一特定的时间点,触发相关的SQL语句或存储过程。事件由一个特定的线程...

小半的博客 8305

mysql事件例题_mysql 事件

五.查看和删除事件show events;show create EVENT test2_insert_5_minute;drop event test2_insert_5_minute;事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”。事件和触发器类似,都是在某些事情发生的时候启动。当数...

weixin_32775495的博客 330

mysql 查看事件_Mysql中的事件

一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行;开启事件查看是否开启:show variables like 'event_scheduler';如果显示OFF,则输入以下语句开启:set global event_scheduler = on;提醒:虽然这里用set global event_scheduler ...

weixin_31591011的博客 2900

MySQL事件简介

备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊MySQL事件。 MySQL的事件功能同Oracle里面的JOB,作为定时任务使用。 文章目录一.语法相关二.开启和关闭事件调度三.案例 一.语法相关 创建事件语法: CREATE [DEFINER = user] EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] [EN

只是甲的博客 891

MYSQL事件的使用、创建事件Create、查看事件、修改时间、删除事件

文章目录事件创建事件查看事件修改事件删除事件 事件 事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”。 优点:一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。 ​ 可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下就非常实用了。 缺点:定时触发,不可以调用。 创建事件 1)向导创建 选择对应数据库下事件->右键新建事件>填写事件信息->保存-&

DayDayUp 4798
上一篇: Android RadioButton 学习笔记
下一篇: 适配多种设备
yesjava
博客等级 码龄19年 69粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值