mysql 的 定时任务执行情况

本文介绍了一个数据库事件 `event_makefriend` 的创建脚本,该事件被设定为每天下午三点执行一次,用于调用 `update_friends_state()` 函数来更新用户的好友状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CREATE EVENT `event_makefriend`  // 名称
ON SCHEDULE EVERY 1 DAY STARTS '2015-11-05 15:00:00' //每天15点执行一次
ON COMPLETION PRESERVE
ENABLE
DO CALL update_friends_state();
### 创建和执行 MySQL 定时任务 #### 开启 Event Scheduler 为了使 MySQL 支持定时任务功能,需确认 `event_scheduler` 参数已启用。可以通过以下命令查看当前状态并进行设置: ```sql SET GLOBAL event_scheduler = ON; ``` 此操作会激活 MySQL 的事件调度器[^3]。 #### 验证 Event Scheduler 状态 可以查询 `information_schema.GLOBAL_VARIABLES` 表来验证 `EVENT_SCHEDULER` 是否处于开启状态: ```sql SELECT VARIABLE_VALUE FROM information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME='EVENT_SCHEDULER'; ``` 如果返回值为 'ON' 则表示已经成功启动了事件调度器[^5]。 #### 创建存储过程 (可选) 对于复杂的业务逻辑或者需要多次调用相同代码的情况,建议先创建一个存储过程用于封装待执行的操作。下面是一个简单的例子: ```sql DELIMITER $$ CREATE PROCEDURE my_procedure() BEGIN -- 插入一些数据到表中 INSERT INTO example_table VALUES ('some value'); END$$ DELIMITER ; ``` 这里定义了一个名为 `my_procedure` 的存储过程,在其中实现了向指定表格插入记录的功能[^4]。 #### 创建定时任务(Event) 一旦准备好了要定期运行的任务(可以直接写 SQL 或者调用之前创建好的存储过程),就可以利用 CREATE EVENT 来安排这些工作了。例如: ```sql CREATE EVENT IF NOT EXISTS daily_cleanup_event ON SCHEDULE EVERY 1 DAY STARTS CURRENT_DATE + INTERVAL 1 DAY DO CALL my_procedure(); ``` 这段脚本会在每天午夜自动触发一次 `daily_cleanup_event` ,进而调用前面提到过的 `my_procedure()` 进行处理。 #### 查看现有 Events 想要了解目前有哪些正在使用的 events 可以通过如下方式获取列表: ```sql SHOW EVENTS FROM your_database_name; ``` 这将显示特定数据库下的所有活动中的定时任务信息。 #### 删除不再需要的 Events 当某些定时任务完成了使命或是不再被需求时,应当及时清理掉它们以免占用资源。使用 DROP EVENT 命令即可轻松完成这一目标: ```sql DROP EVENT IF EXISTS old_event_name; ``` 该指令会移除名称匹配的老版本定时任务实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值