千家信息网

MYSQL中怎么实现一个事件调度器

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章给大家介绍MYSQL中怎么实现一个事件调度器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.查看是否开启:mysql> show variables like 'eve
千家信息网最后更新 2026年10月31日MYSQL中怎么实现一个事件调度器

这篇文章给大家介绍MYSQL中怎么实现一个事件调度器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

1.查看是否开启:

mysql> show variables like 'event_scheduler';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.01 sec)

mysql> select @@event_scheduler;
+-------------------+
| @@event_scheduler |
+-------------------+
| ON |
+-------------------+
1 row in set (0.00 sec)

mysql> show processlist;

+-------+-----------------+----------------+-----------+---------+------+-------
----------------------+------------------+
| Id | User | Host | db | Command | Time | State
| Info |
+-------+-----------------+----------------+-----------+---------+------+-------
----------------------+------------------+
| 1 | event_scheduler | localhost | NULL | Daemon | 24 | Waitin
g for next activation | NULL |

2.语法

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 | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

例:

每秒插入一条记录到数据表
USE test;
CREATE TABLE aaa (timeline TIMESTAMP);
CREATE EVENT e_test_insert
ON SCHEDULE EVERY 1 SECOND5秒(天)后清空test表
CREATE EVENT e_test
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 SECOND
DO TRUNCATE TABLE test.aaa;
CREATE EVENT e_test
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE test.aaa;

2008年5月23日9点39分20秒整清空test表
CREATE EVENT e_test
ON SCHEDULE AT TIMESTAMP '2008-05-23 9:39:20'
DO TRUNCATE TABLE test.aaa;

每天定时清空test表
CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
DO TRUNCATE TABLE test.aaa;

5天后开启每天定时清空test表
CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE test.aaa;
这里5天也可以为0天,当时就开启清空表

每天定时清空test表,5天后停止执行
CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE test.aaa;

该设置要求天数大于1,否则报错。而且创建不成功

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。
该事件会停止每隔一秒插入数据的事件,感觉这点上mysql做的还是有问题。

每天定时清空test表(只执行一次,任务完成后就终止该事件)
CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
ON COMPLETION NOT PRESERVE
DO TRUNCATE TABLE test.aaa;
[ENABLE | DISABLE]可是设置该事件创建后状态是否开启或关闭,默认为ENABLE。
[COMMENT 'comment']可以给该事件加上注释。

3 定时服务日常维护测试
5.4.1 修改事件(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]
a、临时关闭事件
ALTER EVENT e_test DISABLE;
b、开启事件
ALTER EVENT e_test ENABLE;
c、将每天清空test表改为5天清空一次:
ALTER EVENT e_test
ON SCHEDULE EVERY 5 DAY;
d、重命名事件并加上注释
alter event test.new_e_test rename to e_test comment 'e_test_cm';
5.4.2 删除事件(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;
5.4.3 查看事件
a、查看一个event的详细信息可以用下面的视图:
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME = 'e_test_insert' AND EVENT_SCHEMA = 'test'G;
b、简要列出所有的event:show events
语法:
SHOW EVENTS [FROM schema_name]
[LIKE 'pattern' | WHERE expr]
格式化显示所有event
SHOW EVENTSG
格式化显示test用户的event
show events FROM test;
c、查看event的创建信息
SHOW CREATE EVENT event_name
show create event test.e_testG

关于MYSQL中怎么实现一个事件调度器就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

事件 天后 语法 调度 信息 内容 数据 更多 格式 注释 还是 帮助 不错 成功 一个月后 任务 兴趣 前提 天数 小伙 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 苏州找大状互联网科技有限公司 科技股互联网 中国互联网科技股 厦门中拓互联网络科技有限公司 互联网科技社 互联网 科技 唐信互联网科技 融势互联网科技 北京三清互联网科技 北京华百购互联网科技有限公司 汽车互联网创新科技园 南山科技园互联网公司有哪些 宁夏众和广鑫互联网科技有限公司 中国航天科技大学国际工业互联网 爱医互联网络科技 2021互联网科技公司排名 易企秀互联网科技是做什么的 亚光科技低轨卫星互联网 互联网的黑科技实验室 武汉亿视互联网科技有限公司 互联网科技公司的优势 互联网 的科技创新 银优互联网科技有限公司 剑昆互联网络科技有限公司临桂 昊天互联网科技有限公司 知域互联网科技有限公司大骗子 爱医互联网络科技 工业互联网山东科技大学 南京一网一红互联网科技有限公司 广州三三互联网科技有限公司
0