Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
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 権限」を参照してください。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.