9

I noticed a process on the server which has been running for more than 12 days, which I think coincides with the last time MySQL was restarted.

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)

There are no events, and I haven't attempted to created any.

mysql> SELECT * FROM information_schema.EVENTS;

Empty set (0.00 sec)

This is actively using up to 8% of my server's CPU.

Is there a way of determining what this is, or why it was started? Will this try to run every time I restart MySQL? If so, what is it 'waiting' for and do I need to tweak my configuration at all to prevent this?

MySQL 8.0.21

7
  • Could you post results of HTOP or TOP? Nov 23, 2020 at 13:27
  • Could you also post results of A) SHOW GLOBAL VARIABLES LIKE '%event%; and B) SHOW GLOBAL STATUS LIKE '%event%'; for analysis and confirmation nothing EVENT driven has been used since instance start. Nov 23, 2020 at 14:07
  • Did your 8% CPU use go away with event_scheduler = OFF ? Nov 24, 2020 at 1:09
  • 1
    hi how did you know that the event_Scheduler was using this amount of CPU, please !!
    – Hamza AZIZ
    Jul 22, 2021 at 13:37
  • 1
    @HamzaAZIZ I can't remember exactly, but I'm guessing I was looking at htop or something on the command line and traced it to the event scheduler process.
    – BadHorsie
    Sep 21, 2021 at 12:36

1 Answer 1

11

The event_Scheduler is, as it's name suggests, a way to Schedule Events (in this case queries) to run in MySQL at a given time. It is simply waiting for an event to trigger it and tell it to do something. As you can see you have no events set up, so it will be waiting for a long time.

It is enabled by default, but can be disabled by running:

SET @@global.event_scheduler = 0;

You also want to add:

event_scheduler = OFF

to your my.cnf file to prevent it starting after a reboot.

1
  • Does disabling of it make any difference in performance while insertion/updation/SELECTion is being done in multiple threads?
    – Volatil3
    Oct 20, 2022 at 14:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.