自 12 天前服务器重新启动以来,MySQL 事件调度程序一直在等待空队列

Bad*_*sie 9 mysql performance mysql-event mysql-8.0

我注意到服务器上有一个进程已经运行了超过12天,我认为这与上次重新启动MySQL的时间一致。

mysql> SHOW FULL PROCESSLIST;

+---------+-----------------+-----------+------+---------+---------+------------------------+-----------------------+
| Id      | User            | Host      | db   | Command | Time    | State                  | Info                  |
+---------+-----------------+-----------+------+---------+---------+------------------------+-----------------------+
|       5 | event_scheduler | localhost | NULL | Daemon  | 1098372 | Waiting on empty queue | NULL                  |
| 1774483 | root            | localhost | NULL | Query   |       0 | starting               | SHOW FULL PROCESSLIST |
+---------+-----------------+-----------+------+---------+---------+------------------------+-----------------------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

没有事件,我也没有尝试创建任何事件。

mysql> SELECT * FROM information_schema.EVENTS;

Empty set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

这占用了我服务器高达 8% 的 CPU。

有没有办法确定这是什么,或者为什么要开始?每次我重新启动 MySQL 时都会尝试运行它吗?如果是这样,它在“等待”什么?我是否需要调整我的配置来防止这种情况发生?

MySQL 8.0.21

IGG*_*GGt 11

顾名思义,event_Scheduler 是一种安排事件(在本例中为查询)在给定时间在 MySQL 中运行的方法。它只是等待事件触发它并告诉它做某事。正如你所看到的,你还没有设置任何事件,所以它会等待很长时间。

它默认启用,但可以通过运行以下命令禁用:

SET @@global.event_scheduler = 0;

您还想添加:

event_scheduler = OFF

到您的 my.cnf 文件以防止它在重新启动后启动。