Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


20.4.2 イベントスケジューラの構成

イベントは、特別なイベントスケジューラスレッドによって実行されます。イベントスケジューラと呼ぶ場合、実際にはこのスレッドを指しています。実行中、イベントスケジューラスレッドとその現在の状態は、次の説明で示すように、PROCESS 権限を保有するユーザーが SHOW PROCESSLIST の出力で確認できます。

event_scheduler グローバルシステム変数によって、イベントスケジューラがサーバー上で有効であり実行しているかどうかが決まります。これは次の 3 つの値のいずれかを取り、それぞれ次に説明するようにイベントスケジュール設定に影響します。

  • OFF: イベントスケジューラは停止しています。イベントスケジューラスレッドは実行されておらず、SHOW PROCESSLIST の出力に表示されておらず、スケジュール設定済みイベントが実行されていません。OFFevent_scheduler のデフォルト値です。

    イベントスケジューラが停止している場合 (event_schedulerOFF です)、event_scheduler の値を ON に設定することで開始できます。(次の項目を参照してください。)

  • ON: イベントスケジューラが開始され、イベントスケジューラスレッドがすべてのスケジュール設定済みイベントを実行しています。

    イベントスケジューラが ON の場合、イベントスケジューラスレッドは、デーモンプロセスとして SHOW PROCESSLIST の出力に一覧表示され、その状態は次に示すように表示されます。

    mysql> SHOW PROCESSLIST\G
    *************************** 1. row ***************************
         Id: 1
       User: root
       Host: localhost
         db: NULL
    Command: Query
       Time: 0
      State: NULL
       Info: show processlist
    *************************** 2. row ***************************
         Id: 2
       User: event_scheduler
       Host: localhost
         db: NULL
    Command: Daemon
       Time: 3
      State: Waiting for next activation
       Info: NULL
    2 rows in set (0.00 sec)

    イベントスケジュール設定は、event_scheduler の値を OFF に設定することで停止できます。

  • DISABLED: この値はイベントスケジューラを動作しないようにします。イベントスケジューラが DISABLED の場合、イベントスケジューラスレッドは実行していません (また、SHOW PROCESSLIST の出力にも表示されません)。また、イベントスケジューラの状態は実行時に変更できません。

イベントスケジューラのステータスが DISABLED に設定されていない場合、(SET を使用して) event_schedulerONOFF を切り替えることができます。この変数を設定するときに、OFF0 を、ON1 を使用することも可能です。したがって、mysql クライアントで次の 4 つのどのステートメントを使用しても、イベントスケジューラをオンにできます。

SET GLOBAL event_scheduler = ON;
SET @@GLOBAL.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@GLOBAL.event_scheduler = 1;

同様に、次の 4 つのどのステートメントを使用してもイベントスケジューラをオフにできます。

SET GLOBAL event_scheduler = OFF;
SET @@GLOBAL.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@GLOBAL.event_scheduler = 0;

ONOFF には対応する数値がありますが、SELECT または SHOW VARIABLES によって event_scheduler に対して表示される値は、常に OFFON、または DISABLED のいずれかになります。DISABLED に対応する数値はありません。このため、この変数を設定するときに、ONOFF は通常 10 よりも優先されます。

グローバル変数として指定しないで event_scheduler を設定しようとすると、エラーが発生します。

mysql< SET @@event_scheduler = OFF;
ERROR 1229 (HY000): Variable 'event_scheduler' is a GLOBAL
variable and should be set with SET GLOBAL
重要

イベントスケジューラを DISABLED に設定できるのは、サーバーの起動時だけです。event_schedulerON または OFF の場合、実行時にこれを DISABLED には設定できません。また、イベントスケジューラが起動時に DISABLED に設定されている場合、実行時に event_scheduler の値に変更できません。

イベントスケジューラを無効にするには、次の 2 つの方法のいずれかを使用します。

  • サーバーの起動時のコマンド行オプションとして

    --event-scheduler=DISABLED
  • サーバー構成ファイル (Windows システムでの my.cnf または my.ini) で、サーバーが読み取る箇所 (たとえば、[mysqld] セクション内) に次の行を含めます。

    event_scheduler=DISABLED

イベントスケジューラを有効にするには、必要に応じて、--event-scheduler=DISABLED コマンド行オプションを使用しないでサーバーを再起動するか、サーバー構成ファイルの event-scheduler=DISABLED を含む行を削除するかコメントアウトしたあとでサーバーを再起動します。または、サーバーの起動時に DISABLED 値の代わりに ON (または 1) か OFF (または 0) を使用できます。

注記

event_schedulerDISABLED に設定されている場合、イベント操作ステートメントを発行できます。このような場合には警告もエラーも生成されません (ステートメント自体が有効であるとします)。ただし、この変数を ON (または 1) に設定するまで、スケジュール設定済みイベントは実行できません。これが行われると、イベントスケジューラスレッドは、スケジュール設定条件が満たされているすべてのイベントを実行します。

--skip-grant-tables オプションを使用して MySQL Server を起動すると、event_schedulerDISABLED に設定され、コマンド行や my.cnf または my.ini ファイルで設定されたほかのすべての値をオーバーライドします (Bug #26807)。

イベントの作成、変更、または削除に使用される SQL ステートメントについては、セクション20.4.3「イベント構文」を参照してください。

MySQL 5.6 は、INFORMATION_SCHEMA データベースの EVENTS テーブルを提供します。このテーブルは、サーバー上で定義されているスケジュール設定済みイベントに関する情報を取得するためにクエリーできます。詳細は、セクション20.4.4「イベントメタデータ」およびセクション21.7「INFORMATION_SCHEMA EVENTS テーブル」を参照してください。

イベントスケジュール設定と MySQL 権限システムに関する情報については、セクション20.4.6「イベントスケジューラと MySQL 権限」を参照してください。