イベントスケジューラは、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下面的计划任务
イベントが有効になっているかどうかを確認するには、次のコマンドを使用して確認します。
#方式一 SHOW VARIABLES LIKE 'event_scheduler'; #方式二 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
CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'comment'] 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}
ON SCHEDULE スケジュール: 実行時間と間隔を定義します。
ON COMPLETION [NOT] PRESERVE: イベントを 1 回実行するか永続的に実行するかを定義します。デフォルトは 1 回の実行、つまり NOT PRESERVE です。
ENABLE | DISABLE | DISABLE ON SLAVE: イベントを作成後にオンにするかオフにするか、および上からオフにするかを定義します。スレーブサーバーがマスター上の作成イベントのステートメントを自動的に同期する場合、DISABLE ON SLAVE が自動的に追加されます。
COMMENT 'コメント': イベントを定義する
コメント。
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 'comment'] [DO event_body]
DROP EVENT [IF EXISTS] event_name;
create event event_insert_t2 on schedule every 3 second on completion preserve do insert into test2(department,time_v) value('1',now());
10分後にテストテーブルのデータをクリアするイベントを作成する
CREATE EVENT IF NOT EXISTS event_truncate_test2 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 10 MINUTE DO TRUNCATE TABLE test2;
クリアイベント2015-04-17 14:42:00 のテーブル データをテストしますDROP EVENT IF EXISTS event_truncate_test2;
CREATE EVENT event_truncate_test2
ON SCHEDULE
AT TIMESTAMP '2015-04-17 14:42:00'
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('1',NOW());
変更イベントの例
例1
alter event event_insert_t2 disable;他の同様の作成イベント。
イベントの削除の例
DROP EVENT IF EXISTS event_insert_t2;
または
関数システム管理者による誤操作のリスクを軽減します。
その後の管理とメンテナンスに役立ちます。
短所
ビジーでパフォーマンスを要求するデータベースでは、スケジューラーを慎重にデプロイして有効にしてください。
過度に複雑な処理はプログラムで実装する方が適しています。
イベントの開閉にはスーパーユーザー権限が必要です。
アプリケーションシナリオ
統計情報の定期的な収集、履歴データの定期的な消去、定期的なデータベースのチェックなどに適しています。無料のmysqlオンラインビデオチュートリアル
3. ブール教育ヤン・シバのmysql入門ビデオチュートリアル
以上がMySQLの新機能(イベントスケジューラ)例の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。