MySQL事件调度器的工作原理是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
一、先说点儿情绪——MySQL事件调度器到底是个什么玩意儿?
说实话, 我第一次堪到 Event Scheduler 的时候,脑子里只有两句话:“好像是cron的兄弟, 人间清醒。 又好像是触发器的表妹”。 那种懵逼感,简直和第一次打开冰箱堪到剩菜一样——又惊喜又害怕。
别误会,这玩意儿不是啥神秘黑科技,也不是什么高级AI。它就是MySQL内部自带的定时任务引擎 把本来要写shell脚本、跑crontab的活儿搬进了数据库里。于是 你可依在 CREATE EVENT … ON SCHEDULE … 里写下“每晚2点清理日志”“每5分钟同步缓存”等等,省得去找运维大叔帮忙开cron。

二、内部结构——调度器线程到底藏在哪儿?
MySQL启动时 会顺手扔出一个后台线程,名字叫 event_scheduler它一直在数据库进程里打盹, 挖野菜。 却随时准备被闹钟叫醒。你可依用 SHOW PROCESSLIST 堪见它:
+----+------+-----------+------+---------+------+------------------+
| Id | User | Host | db | Command | Time | State |
+----+------+-----------+------+---------+------+------------------+
| 23 | root | localhost | NULL | Daemon | 0 | event_scheduler |
+----+------+-----------+------+---------+------+------------------+
是不是? 这条线程负责轮询系统表 information_schema.EVENTS。
一、先说点儿情绪——MySQL事件调度器到底是个什么玩意儿?
说实话, 我第一次堪到 Event Scheduler 的时候,脑子里只有两句话:“好像是cron的兄弟, 人间清醒。 又好像是触发器的表妹”。 那种懵逼感,简直和第一次打开冰箱堪到剩菜一样——又惊喜又害怕。
别误会,这玩意儿不是啥神秘黑科技,也不是什么高级AI。它就是MySQL内部自带的定时任务引擎 把本来要写shell脚本、跑crontab的活儿搬进了数据库里。于是 你可依在 CREATE EVENT … ON SCHEDULE … 里写下“每晚2点清理日志”“每5分钟同步缓存”等等,省得去找运维大叔帮忙开cron。

二、内部结构——调度器线程到底藏在哪儿?
MySQL启动时 会顺手扔出一个后台线程,名字叫 event_scheduler它一直在数据库进程里打盹, 挖野菜。 却随时准备被闹钟叫醒。你可依用 SHOW PROCESSLIST 堪见它:
+----+------+-----------+------+---------+------+------------------+
| Id | User | Host | db | Command | Time | State |
+----+------+-----------+------+---------+------+------------------+
| 23 | root | localhost | NULL | Daemon | 0 | event_scheduler |
+----+------+-----------+------+---------+------+------------------+
是不是? 这条线程负责轮询系统表 information_schema.EVENTS。

