注目キーワード
  1. 技術
  2. 広告
  3. IDFA
  4. PHP
  5. WordPress

MySQL8からデフォルトONになったevent_schedulerを利用する

MySQLのprocesslistにevent_schedulerがいた

MySQLのprocesslistを見ると、event_schedulerが出てきました。

mysql> show processlist;
+-------+-----------------+-----------------+------+---------+--------+--------------------------------------------------------+------------------+
| Id    | User            | Host            | db   | Command | Time   | State                                                  | Info             |
+-------+-----------------+-----------------+------+---------+--------+--------------------------------------------------------+------------------+
|     55 | event_scheduler | localhost       | NULL | Daemon  | 103848 | Waiting on empty queue                                 | NULL             |
+-------+-----------------+-----------------+------+---------+--------+--------------------------------------------------------+------------------+

event_schedulerというユーザが確認できました。event_schedulerは定期実行をしてくれるスレッドで、cronのような役割をしています。MySQLの設定で、event_schedulerを動かすかどうかを決めることができます。MySQL5.7まではデフォルトでOFFになっていましたが、MySQL8からはデフォルトでONになるようになりました。

event_schedulerの設定方法(ON / OFFを切り替える)

event_schedulerの設定方法を記載しておきます。現在の設定を確認すると、ONになっておりました。

mysql > SHOW VARIABLES like 'event_scheduler';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | ON    |
+-----------------+-------+
1 row in set (0.00 sec)

event_schedulerをOFFにするには、

mysql> SET GLOBAL event_scheduler = 'OFF';

event_schedulerをONにするには、

mysql> SET GLOBAL event_scheduler = 'ON';

と実行します。これだけだと再起動時には、MySQL5.7まではOFF、MySQL8からはONに戻ってしまうので、my.cmfにも追記しておきましょう。

event_schedulerでイベントを作成

ONにしたときの定期実行するイベントを作成します。

CREATE EVENT <イベント名> ON SCHEDULE <スケジュール> DO <実行するクエリ>

上記のような形式でコーディングをします。

mysql> CREATE EVENT test1
    ->     ON SCHEDULE
    ->       EVERY 3 MINUTE
    ->     DO
    ->       SELECT * FROM test1;
Query OK, 0 rows affected (0.03 sec)

このようにすると、3分毎にtest1テーブルにselect参照するイベントが作成できました。

event_schedulerのイベント一覧を表示

作成したイベント一覧を確認するときは、

mysql > show events

上記のコマンドで表示することができます。

event_schedulerのイベントを削除

作成したイベントを削除するときは、

drop event test1

このようにすることで削除できます。test1の部分にイベント名を記載しましょう。