详细分析Mysql中的定时任务(Event事件)
目录
- 前言
- 1. 基本知识
- 2. Event事件
- 3. Demo
前言
基本的知识推荐阅读:
- 详细分析Mysql触发器的基本使用(图文解析)
- 详细分析SQL Server触发器的基本知识
- 详细分析Corn表达式(附Demo)
特性 | 事件定时任务 | 触发器 |
---|---|---|
触发条件 | 基于时间 | 基于表中的 INSERT、UPDATE 或 DELETE 操作 |
使用场景 | 定时清理、报表生成、自动化维护 | 保证数据一致性、操作日志记录、自动级联操作 |
作用范围 | 可以跨多个表、数据库中的任意对象 | 只能作用于与触发器绑定的表 |
执行频率 | 按时间间隔执行(如每小时、每天等) | 每次有数据变更(如插入、更新、删除)时立即执行 |
与时间的关系 | 完全基于外部时间 | 与时间无关,只与数据操作有关 |
执行的SQL | 可以执行复杂的、跨表的SQL操作 | 只能与触发操作的表有关,常常用于表的自动操作 |
基本的Demo示例:
事件定时任务示例
场景:每天凌晨清理表 sessions 中超过 30 天未活跃的会话数据
CREATE EVENT clean_expired_sessions
ON SCHEDULE EVERY 1 DAY
STARTS '2024-09-23 00:00:00'
DODELETE FROM sessions WHERE last_active < NOW() - INTERVAL 30 DAY;
触发器示例
场景:在 users 表中插入一条新记录时,自动在 user_logs 表中记录该操作
CREATE TRIGGER after_user_insert
AFTER INSERT ON users
FOR EACH ROWINSERT INTO user_logs (user_id, action, log_time)VALUES (NEW.id, 'insert', NOW());
1. 基本知识
MySQL 中的事件定时任务(Event Scheduler)允许你在指定的时间点或时间间隔自动执行SQL语句,类似于其他数据库中的计划任务(Scheduler)或Linux中的cron任务
事件任务可以用于自动化数据库维护、数据归档、统计、清理过期数据等
主要特性:
- 可以在未来某一时间点执行任务,或以固定的时间间隔重复执行
- 任务可以单次执行,也可以重复执行
- 不需要外部工具,如 cron,直接在 MySQL 内部进行调度
- 可以暂停或删除任务
事件调度器是MySQL管理定时任务的模块,它在后台运行并监控所有定义的事件
相关的系统变量:
event_scheduler
: 控制事件调度器是否启用ON
:开启事件调度器OFF
: 关闭事件调度器,事件不会自动运行DISABLED
:调度器被禁用
查看当前事件调度器状态:SHOW VARIABLES LIKE 'event_scheduler';
开启事件调度器:SET GLOBAL event_scheduler = ON;
2. Event事件
创建和管理事件:事件调度器中的每一个任务称为一个事件(Event)
创建事件时,需要指定触发的时间、是否循环执行,以及事件的具体SQL操作
创建单次执行的事件:
CREATE EVENT event_name
ON SCHEDULE AT '2024-09-22 12:00:00'
DOUPDATE my_table SET my_column = 'value' WHERE id = 1;
创建重复执行的事件:
CREATE EVENT event_name
ON SCHEDULE EVERY 1 HOUR
STARTS '2024-09-22 12:00:00'
DODELETE FROM my_table WHERE created_at < NOW() - INTERVAL 1 DAY;
删除事件:
DROP EVENT IF EXISTS event_name;
修改事件:
ALTER EVENT event_name
ON SCHEDULE EVERY 2 HOUR
DOINSERT INTO my_log (log_message) VALUES ('Scheduled task executed');
事件的组成部分
CREATE EVENT
:定义事件
ON SCHEDULE
: 定义任务的触发时间,AT
:设定事件在指定的时间点执行。,EVERY
:设定事件以固定的时间间隔执行(可结合 STARTS 和 ENDS 定义任务开始和结束时间)
DO
:事件要执行的SQL语句
ENABLE
或DISABLE
:决定事件是否启用
COMMENT
:给事件添加注释
事件状态管理
启用或禁用事件:
ALTER EVENT event_name ENABLE;
ALTER EVENT event_name DISABLE;
查看事件状态
: 可以通过 INFORMATION_SCHEMA.EVENTS 查看数据库中所有的事件及其详细信息
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME = 'event_name';
事件的生命周期
永久事件
:这些事件一旦被创建,会一直存在,直到手动删除或修改一次性事件
:执行完一次之后就会自动删除
3. Demo
示例 1: 每天凌晨自动清理过期的会话数据
将在 2024-09-23 00:00:00 开始,每天运行一次。删除表 sessions 中最近 7 天未活跃的会话数据
CREATE EVENT clean_sessions
ON SCHEDULE EVERY 1 DAY
STARTS '2024-09-23 00:00:00'
DODELETE FROM sessions WHERE last_active < NOW() - INTERVAL 7 DAY;
示例 2: 每月自动生成销售报表
每月执行一次,将当月的销售总额插入到 monthly_sales_report 表中,CURRENT_TIMESTAMP 表示事件从当前时间开始执行
CREATE EVENT generate_sales_report
ON SCHEDULE EVERY 1 MONTH
STARTS CURRENT_TIMESTAMP
DOINSERT INTO monthly_sales_report (report_month, total_sales)SELECT DATE_FORMAT(NOW(), '%Y-%m'), SUM(amount) FROM sales WHERE created_at >= DATE_SUB(NOW(), INTERVAL 1 MONTH);
示例 3: 一次性执行的临时任务
该事件将在 2024-09-25 14:00:00 执行一次,将最近 30 天登录过的用户状态更新为 ‘active’
CREATE EVENT temp_task
ON SCHEDULE AT '2024-09-25 14:00:00'
DOUPDATE user_data SET status = 'active' WHERE last_login > NOW() - INTERVAL 30 DAY;
相关文章:
详细分析Mysql中的定时任务(Event事件)
目录 前言1. 基本知识2. Event事件3. Demo 前言 基本的知识推荐阅读: 详细分析Mysql触发器的基本使用(图文解析)详细分析SQL Server触发器的基本知识详细分析Corn表达式(附Demo) 特性事件定时任务触发器触发条件基于…...
SpinalHDL之语义(Semantic)(三)
本文作为SpinalHDL学习笔记第七十一篇,介绍SpinalHDL的规则(Rules)。 目录: 1.简介(Introduction) 2.并⾏性(Concurrency) 3.以最后赋值为准(Last valid assignment wins) 4.Scala下的信号和寄存器的内在联系(Signal and register interactions with Scala)(OOP引⽤+函数…...
SpringBoot 请求和响应
1. Spring Boot 请求与响应概述 在 Spring Boot 开发中,客户端通过浏览器发起请求,后端使用内置的 Tomcat Web 服务器处理请求,返回响应数据。请求和响应的过程遵循 HTTP 协议。Spring Boot 的核心 Servlet 程序是 DispatcherServlet&#x…...
LQR算法核心思想
本章以倒立摆为解决目的 什么是线性二次型控制器(LQR) 开环系统 即状态变量的倒数 系统的状态空间矩阵A * 系统状态变量x A状态矩阵:描述系统本身物理特性的一个矩阵,它是由系统本身的机械结构、物理结构决定的,无法…...
AI大模型之旅-最强开源文生图工具Stable Diffusion WebUI 教程
1.1克隆 Automatic1111 的 GitHub 仓库 在你想安装 Web UI 的文件夹路径下执行 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 这将会克隆整个仓库到本地。 这里会默认访问 https://huggingface.co/ 下载 因此需要魔法 1.2 进入仓库目录 cd stable-di…...
WinForm程序嵌入Web网页
文章目录 前言一、三方库或控件的选择测试二、Microsoft Edge WebView2安装、使用步骤1.安装2.使用 前言 由于此项目需要winform客户端嵌入web网页并于JAVA端交互数据,所以研究了一下嵌入web网页这部分,趟了一遍雷,这里做下记录。 一、三方库…...
Redis string类型hash类型
string类型 类型介绍 在Redis中的所有的key都是string类型,而value的类型有多种。 Redis中的字符串是直接按照二进制的方式进行存储的,也就是不会做任何的编码转换,存的是什么,取出来的就是什么。这样一般来说,Redi…...
Solidity智能合约中的异常处理(error、require 和 assert)
Solidity 中的三种抛出异常方法:error、require 和 assert 在 Solidity 开发中,异常处理是确保智能合约安全性和正确性的关键步骤。Solidity 提供了三种主要方法来抛出异常:error、require 和 assert。本文将详细介绍这三种方法的用途、实现方…...
True NAS禁用ipv6
在 TrueNAS Scale 中,禁用 IPv6 的方法如下:12 进入 System->Advanced->Sysctl,设置一个 sysctl 可调整变量 net.ipv6.conf.all.disable_ipv6,值为 1,以完全禁用 IPv6。\...
笔记整理—linux进程部分(2)使用fork创建进程
为什么要创建进程,首先每个程序的运行都需要一个进程;多进程实现宏观上的并行。 fork的原理,是进程的分裂生长模式。如果操作系统需要一个新的进程,那么就会以cp的方法得到一个新的进程,此时老的进程是父进程ÿ…...
在Python中实现多目标优化问题(6)
在Python中实现多目标优化问题 在Python中实现多目标优化,除了传统的进化算法(如NSGA-II、MOEA/D)和一些基于机器学习的方法外,还有一些新的方法和技术。这些新方法通常结合了最新的研究成果,提供了更高效的解决方案。…...
Java EE中的编码问题及解决方案
Java EE中的编码问题及解决方案 在Java EE开发中,处理字符编码是确保数据正确传输和显示的重要环节。不同的编码不一致会导致乱码,影响用户体验。本文将总结在Java EE中可能遇到的编码问题及其解决方案。 1. 输入数据编码问题 在表单提交时,…...
9月27日,每日信息差
第一、中国科学家团队在干细胞治疗领域取得重要突破,通过化学重编程技术成功制备出胰岛细胞,并用于移植治疗一名 1 型糖尿病患者,实现了临床功能性治愈。相关研究成果已发表在国际权威期刊《细胞》上。 第二、交通运输部公路局局长周荣峰在国…...
什么是 Angular 开发中的 Dumb components
Dumb components,在 Angular 开发中也被称为 Presentational components,它们的主要职责是通过展示数据和触发事件,把业务逻辑和 UI 表现分离开来。Dumb components 只通过 Input() 接收数据,Output() 向外发送事件,不…...
Docker 进入容器运行命令的详细指南
Docker 进入容器运行命令的详细指南 Docker 是一个开源的容器化平台,广泛应用于开发和生产环境中。它允许开发者打包应用程序及其依赖项到容器中,并能够在不同的平台上快速部署和运行。容器通常是独立且隔离的,但在开发、调试或维护过程中&a…...
如何禁止非真实用户的ip访问网站服务器
为了禁止非真实用户的IP访问网站服务器,可以采用多种技术手段和策略。以下是一些常用的方法: 1. 使用IP黑名单和白名单 黑名单:定期更新和维护一个IP黑名单,阻止已知的恶意IP地址或数据中心IP访问网站。白名单:对于特…...
探索SpringBoot:学科竞赛管理项目开发
2 相关技术简介 2.1Java技术 Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任…...
ultralytics yolo v8 示例:加载官方模型进行推理
Ultralytics YOLO 是计算机视觉和 ML 领域专业人士的高效工具。 安装 ultralytics 库: pip install ultralytics 实现代码如下: import cv2 from ultralytics import YOLO# 加载预训练的 YOLOv8n 模型 ckpt_dir "./ckpt/" # 模型缓存地址…...
【中间件学习】Nginx快速入门(为了配置一个项目)
-----------------------------本文章借鉴遇见狂神说--------------------------- 一、一个产品出现瓶颈?? 在一个产品刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应该就够…...
鸿蒙harmonyos next flutter通信之MethodChannel获取设备信息
本文将通过MethodChannel获取设备信息,以此来演练MethodChannel用法。 建立channel flutter代码: MethodChannel methodChannel MethodChannel("com.xmg.test"); ohos代码: private channel: MethodChannel | null nullthis.c…...
【笔记】原子结构的近代理论
近代原子结构理论的建立是从氢原子光谱得到启示的。 一、氢原子光谱与波尔理论 1.氢原子光谱 在装有两个电极的真空玻璃管内通入极少量高纯氢气,通高压电使之放电,管中发出的光束通过分光棱镜,得到分立的谱线,称为线状光谱。 发…...
【python】循环中断:break 和 continue
目录: while 循环的基础语法while 循环的基础案例while 循环的嵌套应用while 循环的嵌套案例for 循环的基础语法for 循环的嵌套应用循环中断:break 和 continue综合案例 学习目标: 掌握使用 continue 和 break 关键字控制循环 思考&#…...
WIFI密码默认显示
文章目录 需求分析遇到问题问题原因解决方案 需求 在进入设置,点击某一个wifi,连接wifi 界面,显示密码默认选中状态,效果如下 分析 在 WiFi密码被输入法挡住 中我们已经分析了整个流程,布局文件和控制中心。 结局系统设置WIFI连…...
Emiya 家今天的饭C++
题目: 样例解释: 【样例 1 解释】 由于在这个样例中,对于每组 i,j,Emiya 都最多只会做一道菜,因此我们直接通过给出烹饪方法、主要食材的编号来描述一道菜。 符合要求的方案包括: 做一道用烹饪方法 1、主要…...
Mybatis缓存机制(图文并茂!)
目录 一级缓存 需求我们在一个测试中通过ID两次查询Monster表中的信息。 二级缓存 案例分许(和上述一样的需求) EhCache第三方缓存 在了解缓存机制之前,我们要先了解什么是缓存: 缓存是一种高速存储器,用于暂时存储访问频繁的数据&…...
Git 工作区、暂存区和版本库
Git 工作区、暂存区和版本库 Git 是一个强大的版本控制系统,它帮助开发者管理代码历史,协作开发,以及跟踪和合并更改。为了更好地理解 Git 的工作流程,我们需要了解 Git 中的三个核心概念:工作区(Workspac…...
SSH 远程连接到 Linux 服务器上的 SQLite
通过 SSH 远程连接到 Linux 服务器上的 SQLite 数据库文件的流程,可以分为以下几个步骤: 通过 SSH 连接到远程 Linux 服务器。在远程服务器上执行 SQLite 命令行工具,操作数据库文件。在本地使用工具,通过 SSH 隧道间接访问远程的…...
使用ElasticSearch-dump工具进行ES数据迁移、备份
elasticsearch-dump基本使用 该工具基于第三方Elasticdump工具来实现,仓库地址:https://github.com/elasticsearch-dump/elasticsearch-dump/tree/master,用于更加快捷方便的将Elasticsearch不同集群的数据进行索引备份和还原。 一、安装 …...
SpringMVC源码-SpringMVC源码请求执行流程及重点方法doDispatch讲解
一、开始请求 在浏览器访问http://localhost:8080/spring_mymvc/userlist这个接口,是个get请求。 FrameworkServlet类的service方法会被请求到: 调用路径如下: service:945, FrameworkServlet (org.springframework.web.servlet) service:764, HttpSer…...
《深度学习》OpenCV 指纹验证、识别
目录 一、指纹验证 1、什么是指纹验证 2、步骤 1)图像采集 2)图像预处理 3)特征提取 4)特征匹配 5)相似度比较 6)结果输出 二、案例实现 1、完整代码 2、实现结果 调试模式: 三、…...
wordpress5.2 icp备案号/网络营销策略包括哪几大策略
文章目录高度相关的几个基本概念RTKLIB中高度设置与计算参考文献由于在GNSS定位中由多种高度表示,不同的高度概念很容易混淆,中英文对应有时候也容易搞混。因此整理了一下常用的两种高度——椭球高、正高的概念与计算,并且标注了对应的英文&a…...
大气医院网站源码/sem与seo
MyClouds企业级微服务平台 MyClouds-V2.1-RC 已发布。更新如下1. [缺陷] 完善了直接访问静态html页面时的权限控制逻辑。2. [重构] 在LayUI前端框架下实现了根据权限数据动态生成主页左侧导航菜单。3. [重构] 放弃使用spring session redis集中存储的模式进行分布式会话管理&a…...
wordpress gzip/河南seo技术教程
macOS 安装 charles 手机抓包1,安装 Charles1.1 安装 charles破解版2.对手机进行抓包 http3.对手机进行https抓包1,安装 Charles Download Charles 官网下载 charles系列破解激活办法(最高charles4.2都可以激活) 1.1 安装 cha…...
福田附近公司做网站建设哪家效益快/站长工具app官方下载
java读取文件或是文件流的代码,涵盖了读取jar文件中的文件流,网络文件流等,有些读取方式为了防止编码转换带来的问题,采取了动态byte[]的方式读取,源码如下 : C# 同样也是一样的,只是API对应的不同而已&am…...
做app网站需要什么条件/市场营销模式有哪些
Zebra项目图解...
网站建设 提成/怎样制作一个网站
问题引入 可以应用于机器学习(Python)的梯度下降寻找最小值 计算: minf(x) x1 - x2 2x1^2 2x1x2 x2^2 给定初始值 X^(0) (0,0)^T import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np def Fun(x,y):return x - y 2 * x * …...