当前位置: 首页 > news >正文

MySQL--基础知识点--81.2--EVENT

在 MySQL 中,事件(Event) 是一种内置的定时任务机制,用于在指定时间自动执行预定义的 SQL 语句或存储过程。它类似于操作系统的定时任务(如 cron job),但完全由 MySQL 数据库管理。

1 事件的核心特性

  1. 定时执行
    • 支持一次性执行AT 子句)或周期性执行EVERY 子句)。
  2. 精确控制
    • 可按秒、分钟、小时、天、周、月、年等单位定义执行频率。
  3. 依赖事件调度器
    • 需确保 MySQL 的事件调度器已开启(默认可能关闭)。

2 如何创建事件

基本语法:

CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
DO
  -- 要执行的 SQL 语句或存储过程

2.1 示例 1:每天凌晨清理过期日志

场景:假设有一个日志表 app_logs,需每天凌晨 2 点删除 30 天前的日志。
实现代码

DELIMITER 
$$
 
CREATE EVENT IF NOT EXISTS clean_old_logs
ON SCHEDULE EVERY 1 DAY
STARTS '2025-04-11 02:00:00'
DO
BEGIN
  DELETE FROM app_logs 
  WHERE log_time < NOW() - INTERVAL 30 DAY;
END 
$$
 
DELIMITER ;

关键参数说明

  • EVERY 1 DAY:定义每天执行一次。
  • STARTS:指定首次执行时间(若省略,默认立即执行)。
  • DO:定义要执行的操作(多语句需用 BEGIN…END 包裹)。

2.2 示例 2:每小时生成统计报表

场景:假设需每小时调用存储过程生成订单统计报表。
实现代码:

CREATE EVENT generate_hourly_report
ON SCHEDULE EVERY 1 HOUR
STARTS CURRENT_TIMESTAMP
DO
  CALL GenerateOrderReport(); -- 调用存储过程生成报表

说明

  • EVERY 1 HOUR:定义每小时执行一次。
  • STARTS CURRENT_TIMESTAMP:立即开始执行,并按小时周期重复。

3 事件管理命令

查看所有事件:

SHOW EVENTS;

启用/禁用事件:

ALTER EVENT clean_old_logs ENABLE;  -- 启用
ALTER EVENT clean_old_logs DISABLE; -- 禁用

删除事件:

DROP EVENT IF EXISTS clean_old_logs;

4 注意事项

  • 1 事件调度器状态
    • 检查是否开启:
      SHOW VARIABLES LIKE 'event_scheduler';
      
    • 开启调度器(若未启用):
      SET GLOBAL event_scheduler = ON;
      
  • 2 权限要求
    • 用户需具备 EVENT 权限才能创建、修改或删除事件。
  • 3 时间精度
    • MySQL 事件的最小时间精度为秒级,无法执行毫秒级任务。
  • 4 错误处理
    • 若事件执行过程中发生错误,默认不会终止后续执行(可通过 ON COMPLETION PRESERVE 调整)。
  • 5 资源占用
    • 高频事件可能增加数据库负载,需合理设计执行频率和 SQL 逻辑。

相关文章:

  • Spark core编程之RDD 转换算子分类
  • java并发编程面试之ThreadLocal深度解析
  • python多线程+异步编程让你的程序运行更快
  • 蓝桥杯 分解质因数(唯一分解定理)
  • 【专题】贪心算法
  • [C语言]gets和fgets函数区别及详解
  • uniapp微信小程序图片生成水印
  • scrum详细理解
  • 前端笔记-JavaScript部分(上)
  • [特殊字符]深入浅出理解 URL:从新手到精通的系统解析
  • App Cleaner Pro for Mac 中 Mac软件卸载工具
  • 10 个最新 CSS 功能已在所有主流浏览器中得到支持
  • 软件设计师-下午题-试题1(15分)
  • Excel 动态比较两列数据:实现灵活的数据验证
  • minio命令行客户端mc常见用法
  • 活动策划岗位(应届生求职)
  • Java的三大特性详解
  • 蓝桥杯 分巧克力
  • DirectX12(D3D12)基础教程六 计算着色器通用计算
  • T-Box车载系统介绍及其应用
  • 深圳网站建设小程序/企业网站cms
  • 湖北公司响应式网站建设推荐/甘肃省seo关键词优化
  • 郑州网站建设有限公司/常州谷歌优化
  • 基于WEB的企业网站开发 开题报告/威海seo
  • 电商网站怎么做与众不同/排名函数
  • 带数据库的网站怎么建/免费推广的方式有哪些