ホームページ  >  記事  >  データベース  >  MySQLの新機能(イベントスケジューラ)例の詳細説明

MySQLの新機能(イベントスケジューラ)例の詳細説明

零下一度
零下一度オリジナル
2017-05-09 12:00:491378ブラウズ

概要

イベントスケジューラは、MySQL5.1以降に追加された新機能です、時間トリガーLinux システムのタスク スケジューラ crontab、またはウィンドウのスケジュールされたタスクに似ています。 MySQL のイベント スケジューラは 1 秒あたり 1 つのタスクを実行できますが、オペレーティング システムのスケジュールされたタスク (Linux の CRON や Windows のタスク プランニングなど) は 1 分あたり 1 つのタスクしか実行できないことに注意してください。 类似于<a href="http://www.php.cn/wiki/1497.html" target="_blank">linux</a>系统下面的任务调度器crontab,或者类似与window下面的计划任务

イベント機能がオンになっているか確認してください

イベント機能を使用する場合は、まずmysqlのバージョンが5.1以上であることを確認してから、mysqlサーバー上のイベントがオンになっているかどうかを確認してください。

イベントが有効になっているかどうかを確認するには、次のコマンドを使用して確認します。

#方式一
SHOW VARIABLES LIKE &#39;event_scheduler&#39;;
#方式二
SELECT @@event_scheduler;
#方式三
SHOW PROCESSLIST;

#查看事件状态
SHOW EVENTS;

event_scheduler が on であるか、PROCESSLIST にevent_scheduler 情報が表示されている場合、イベントは有効になっています。オフと表示される場合、または PROCESSLIST にevent_scheduler情報が表示されない場合は、イベントが有効になっていないため、有効にする必要があることを意味します。

イベント関数を有効にする

方法 1. 動的パラメータを使用して動的パラメータを変更する

SET GLOBAL event_scheduler = ON;

このパラメータを変更するとすぐに有効になりますが、mysql を再起動すると復元されます。つまり、設定は再起動をまたぐことはできません。


方法2.設定ファイルを変更して再起動 my.cnfの[mysqld]セクションに以下の内容を追加し、mysqlを再起動します。

event_scheduler=ON;

データベース構成を変更するには、必ず権限が必要です。

方法3: 起動コマンドに直接「–event_scheduler=1」を追加します

mysqld ... --event_scheduler=ON

イベント構文

1. イベントを作成します
CREATE
    [DEFINER = { user | CURRENT_USER }]
    EVENT
    [IF NOT EXISTS]
    event_name
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT &#39;comment&#39;]
    DO event_body;

schedule:
    AT timestamp [+ INTERVAL interval] ...
     | EVERY interval
    [STARTS timestamp [+ INTERVAL interval] ...]
    [ENDS timestamp [+ INTERVAL interval] ...]
interval:
  quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
              WEEK | SECOND | YEAR_MONTH | DAY_HOUR |
DAY_MINUTE |DAY_SECOND | HOUR_MINUTE |
HOUR_SECOND | MINUTE_SECOND}

DEFINER: イベント実行時に権限を確認するユーザーを定義します。

ON SCHEDULE スケジュール: 実行時間と間隔を定義します。
ON COMPLETION [NOT] PRESERVE: イベントを 1 回実行するか永続的に実行するかを定義します。デフォルトは 1 回の実行、つまり NOT PRESERVE です。
ENABLE | DISABLE | DISABLE ON SLAVE: イベントを作成後にオンにするかオフにするか、および上からオフにするかを定義します。スレーブサーバーがマスター上の作成イベントのステートメントを自動的に同期する場合、DISABLE ON SLAVE が自動的に追加されます。
COMMENT 'コメント': イベントを定義する
コメント

2. イベントの変更
ALTER
    [DEFINER = { user | CURRENT_USER }]
    EVENT event_name
    [ON SCHEDULE schedule]
    [ON COMPLETION [NOT] PRESERVE]
    [RENAME TO new_event_name]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT &#39;comment&#39;]
    [DO event_body]

3. イベントの構文
DROP EVENT [IF EXISTS] event_name;

1. イベントの作成

3 秒ごとにテーブルにデータを挿入しますtest2
create event event_insert_t2
on schedule every 3 second
on completion preserve
do insert into test2(department,time_v) value(&#39;1&#39;,now());

実行結果


イベント実行結果


例2

MySQLの新機能(イベントスケジューラ)例の詳細説明10分後にテストテーブルのデータをクリアするイベントを作成する

CREATE EVENT IF NOT EXISTS event_truncate_test2
ON SCHEDULE
AT CURRENT_TIMESTAMP + INTERVAL 10 MINUTE
DO TRUNCATE TABLE test2;

例3

クリアイベント2015-04-17 14:42:00 のテーブル データをテストします

DROP EVENT IF EXISTS event_truncate_test2;
CREATE EVENT event_truncate_test2
ON SCHEDULE
AT TIMESTAMP &#39;2015-04-17 14:42:00&#39;
DO TRUNCATE TABLE test2;

例 4

5 日後にテーブル test2 へのデータの挿入を毎日 3 秒間開始し、1 か月後に実行を停止します

CREATE EVENT IF NOT EXISTS event_truncate_test2
ON SCHEDULE EVERY 3 SECOND
STARTS CURRENT_TIMESTAMP + INTERVAL 5 day
ENDS CURRENT_TIMESTAMP + INTERVAL  1 month
ON COMPLETION PRESERVE
DO INSERT INTO test2(department,time_v) VALUES(&#39;1&#39;,NOW());

変更イベントの例

例1

イベントを一時的に閉じる

alter event event_insert_t2 disable;
他の同様の作成イベント。

イベントの削除の例

DROP EVENT IF EXISTS event_insert_t2;

ストアド プロシージャ

または

関数

を呼び出すイベントは、通常の呼び出しと似ています。

イベントの長所、短所、および適用シナリオ

利点

スケジュールされたタスクは、オペレーティング システム層での展開を回避するために、DBA によって均一に管理されます。

  1. システム管理者による誤操作のリスクを軽減します。

  2. その後の管理とメンテナンスに役立ちます。

  3. 短所

  4. ビジーでパフォーマンスを要求するデータベースでは、スケジューラーを慎重にデプロイして有効にしてください。

  5. 過度に複雑な処理はプログラムで実装する方が適しています。

  6. イベントの開閉にはスーパーユーザー権限が必要です。

  7. アプリケーションシナリオ

    統計情報の定期的な収集、履歴データの定期的な消去、定期的なデータベースのチェックなどに適しています。
  8. 【関連する推奨事項】
  9. 1.

    無料のmysqlオンラインビデオチュートリアル

  10. 2.
MySQLの最新マニュアルチュートリアル

3. ブール教育ヤン・シバのmysql入門ビデオチュートリアル

以上がMySQLの新機能(イベントスケジューラ)例の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。