コアポイント
SET GLOBAL event_scheduler = ON;
SET GLOBAL event_scheduler = OFF;
イベントを作成する場合、イベントを作成したMySQLユーザーが実行アクセス許可を持っていることのみが操作を実行できることに注意してください。イベント名の長さは64文字に制限されており、ケースに依存しないユニークである必要があります。別のイベントによってイベントを作成、変更、または削除することはできません。イベントスケジュールをセットアップするときに、機能またはユーザー定義の関数を保存することはできません。 と呼ばれます。サーバーのトラフィックが低いときに、1回限りまたは定期的にイベントをスケジュールすることができます。この記事では、イベントの使用を開始するために知っておくべきことを説明します。イベントスケジューラを開始し、1回限りまたは複数の実行イベントを追加し、既存のイベントを表示し、イベントを変更します。また、MySQLイベントを使用する実用的な例として、計画されたブログ投稿を使用する方法も共有します。
イベントスケジューラを開始MySQLイベントスケジューラは、バックグラウンドで実行され、実行されるイベントを常に探しているプロセスです。イベントを作成またはスケジュールする前に、次のコマンドを発行して最初にスケジューラを開く必要があります。
同様に、すべてのイベントを閉じるには、次のことを使用できます。
mysql> SET GLOBAL event_scheduler = ON;
mysql> SET GLOBAL event_scheduler = OFF;
使用イベント
mysql> SHOW PROCESSLIST ... Id: 79 User: event_scheduler Host: localhost db: NULL Command: Daemon Time: 12 State: Waiting on empty queue Info: NULL
イベントを作成する場合、イベントを作成したMySQLユーザーが実行権限を持っていることのみが操作を実行できることに注意する必要があります。他のいくつかの制限には、次のものが含まれます
イベントスケジュールを設定する場合、保存された関数またはユーザー定義関数を参照できません。
イベントを作成
次の例では、イベントを作成します
mysql> SET GLOBAL event_scheduler = ON;
およびBEGIN
ステートメントは、指定された時間に実行される1つ以上のクエリを中心に展開します。セミコロンはEND
ステートメントを終了するために必要であるため、クライアントを介して操作する場合は、UPDATE
ステートメントを発行する前にセパレーターを切り替えてからバックバックする必要があります。 CREATE EVENT
を使用して、既存のすべてのイベントのリストを表示できます。 SHOW EVENTS
mysql> SET GLOBAL event_scheduler = OFF;
句を使用して他の状況を明示的に宣言しない限り、:ON COMPLETION
mysql> SHOW PROCESSLIST ... Id: 79 User: event_scheduler Host: localhost db: NULL Command: Daemon Time: 12 State: Waiting on empty queue Info: NULL
を使用できます。
DROP EVENT
DELIMITER | CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO BEGIN UPDATE mytable SET mycol = mycol + 1; END | DELIMITER ;
EVERY
イベントを1回または永久に実行する代わりに、
mysql> SHOW EVENTS ********************** 1. row ********************** Db: mysql Name: myevent Definer: dbuser@localhost Time zone: SYSTEM Type: ONE TIME Execute At: 2011-10-26 20:24:19 Interval Value: NULL Interval Field: NULL Starts: NULL Ends: NULL Status: ENABLED Originator: 0 character_set_client: utf8 collation_connection: utf8_general_ci
この例では、定期的なイベントが明日から始まり、1年ごとに1年間実行されます。タイミングに関しては、指定された間隔は、年、月、週、日、時間、分、瞬間、または2番目です。キーワードは特異な形で与えられていることを忘れないでください。 START
END
CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR ON COMPLETION PRESERVE DO BEGIN UPDATE mytable SET mycol = mycol + 1; END |
INTERVAL 5 MINUTE
既存のイベントを削除して再作成する代わりに、既存のイベントの動作を変更する場合は、
異なるクエリセットでイベントを更新するには、使用できます。 イベントの名前を変更するには、句を使用できます。
ALTER EVENT
ブログ投稿プラン
DROP EVENT myevent;
実用的な例を示すために、ブログがあり、将来のいつか公開される投稿をスケジュールするオプションが必要だとします。これを達成する1つの方法は、タイムスタンプと公開されたフラグをデータベースレコードに追加することです。 Cronスクリプトは1分あたり1回実行され、タイムスタンプをチェックし、公開すべき記事のフラグを切り替えます。しかし、これは非効率的であるようです。これを行う別の方法は、記事を公開するときにトリガーされるMySQLイベントを使用することです。ブログエントリフォームにはチェックボックスがある場合があり、それを選択することは、これが計画された投稿であることを意味します。さらに、フォームには、投稿する投稿の日付と時刻を入力するための入力フィールドがあります。受信スクリプトは、データベースにブログエントリを追加し、イベントを管理してスケジュールする責任があります(すぐに投稿された投稿ではない場合)。関連するコードは次のとおりです
mysql> SET GLOBAL event_scheduler = ON;
を使用してイベントを削除して、新しいスケジュールされた時間で再添加することができます。 DROP EVENT IF EXISTS
概要
MySQLイベントとは何か、独自のイベントを作成および管理する方法を確実に理解する必要があります。イベントはCronジョブやスケジュールされたタスクを置き換えることはできませんが、イベントは外部コード(PHPスクリプトなど)を実行できないため、MySQLデータベースに固有の時間関連タスクの代替品です。いつものように、あなたがもっと学ぶことに興味があるなら、必ず公式のドキュメントを読んでください。Garsya / ShutterStockの写真 MySQLイベント(FAQ)
の使用に関するFAQ (記事が長すぎて擬似オリジナルの目標と一致しないため、FAQパーツはここで省略されています。FAQパーツの内容は元のテキストと非常に反復的です。
以上がMySQLイベントを操作しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。