1.はじめにイベント
イベント(イベント)がコールする適切な時期でのMySQLのデータベースオブジェクトのプロセスです。イベントは、かつてと呼ばれる、だけでなく、定期的に、つまり、いわゆる管理するために、特定のスレッドで構成され、起動可能な「イベントスケジューラを。」
特定の物事が起こるときに、同様のイベントとトリガーが起動されます。トリガーを開始し、イベントが開始するようにスケジュールされたイベントに基づいている場合は、データベース上で声明を起動すると。それらの相互の類似性に、イベントので、それはまた、一時的なトリガとして知られています。
イベントは、スケジュールされたタスクによるオリジナル作品が唯一のオペレーティングシステムで実行することができ、およびMySQLのイベントスケジューラは、毎秒のタスクを実行するために正確であることができ、および取り替えのようなオペレーティングシステムのスケジュールされたタスク(:CRON下のLinuxまたはWindowsでタスクスケジューラは)唯一の1分に1回行うことが正確であることができます。
2つのイベントの長所と短所
2.1の利点
データのいくつかの通常の操作は、もはや直接自身が提供する機能を使用して外部プログラム、データベースに依存しません。
パーは、第二のいくつかの厳しいリアルタイム環境では非常に実用的である、タスクを実行するために達成することができます。
2.2欠点
トリガーを時限は、それを呼び出すことができません。
3イベントを作成します。
イベントを作成するイベントを作成するためのステートメント。各イベントは、2つの主要部分、最初の部分は、イベント(eventschedule、ときに開始イベントの開始周波数を表すもので予定されているから成ります。
第二部は、イベントが始まったときに実行されるコードでイベントアクション(イベントアクション)、で、アクションイベントは、SQL文が含まれている、それはあなたがまた、ストアドプロシージャまたは作ることができ、簡単な挿入または更新文のかもしれない
ベニンを...私たちは、複数のSQLを実行することができ、どちらも最後の文ブロック、。イベントはアクティブに(開く)または停止する(シャットダウン)、アクティビティは、イベントスケジューラのイベントアクションをチェックするために呼び出されなければならないことを意味し、宣言はイベントがディレクトリに格納されていることを意味止めるが、スケジューラは、それが呼び出す必要があるかどうかをチェックしませんすることができます。イベントが作成されたら、それはすぐにアクティブになり、イベント・アクティビティを1回以上行ってもよいです。
次のように3.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 '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}
用語集:
EVENT_NAME:作成したイベント名(一意に決定)。
スケジュールされたタスク:スケジュールに。
スケジュール:実行時間と周波数イベントの決定(過去の時間が間違っていると、それは未来の時間でなければならない時間に注意してください)、およびAT EVERYの2つの形式があります。
[完了時に[]保存しない] : オプションで、デフォルトはタスクが完了した後に予定されているイベントをドロップし、自動的に保存されませ完了時であり、完了時にドロップアウトしないであろうPRESERVE。
【COMMENT「コメント」]:オプション、コメントイベントを記述するために使用される、かなりのコメント、64バイトの最大長。
[ENABLE | DISABLE]をデフォルトの設定状態イベントは、ENABLE:システムは、このイベントを実行しようとしていることを示し、DISABLE:問題はALTER使用して変更することができます閉じ
、実行するSQL文(複合文することができます):DO EVENT_BODYを。イベントを作成するストアドプロシージャで使用される場合、正当。
オフイベントスケジューラで3.2
デフォルトでオフになってイベントを呼び出すための責任3.2.1 MySQLのイベントスケジューラevent_scheduler。スケジューラは、常にあなたがスケジューラを開く必要があり、イベントを作成するには、イベントが呼び出されるかどうかを監視します。
mysql> show variables like '%event_scheduler%';
+-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | event_scheduler | OFF | +-----------------+-------+
3.2.2オープンイベントスケジューラ
コマンドラインから
次のコマンドラインのいずれかで
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON; SET GLOBAL event_scheduler = 1; SET @@global.event_scheduler = 1;
コンフィギュレーションファイルでのmy.cnf
event_scheduler = 1 #或者ON
ビュースケジューラのスレッド
mysql> show processlist;
+----+-----------------+-----------+------+---------+------+------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------+------+---------+------+------------------------+------------------+
| 2 | root | localhost | NULL | Query | 0 | NULL | show processlist | | 3 | event_scheduler | localhost | NULL | Daemon | 6 | Waiting on empty queue | NULL| +----+-----------------+-----------+------+---------+------+------------------------+------------------+
3.2.3 Closeイベントスケジューラ
コマンドライン
次のコマンドラインのいずれかによって、
SET GLOBAL event_scheduler = OFF;
SET @@global.event_scheduler = OFF; SET GLOBAL event_scheduler = 0; SET @@global.event_scheduler = 0;
my.cnfのプロファイル
で[mysqldを]増加
event_scheduler = 0 #或者OFF,DISABLED
ビュースケジューラのスレッド
mysql> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+
| 2 | root | localhost | NULL | Query | 0 | NULL | show processlist | +----+------+-----------+------+---------+------+-------+------------------+
たとえば、3.3:すべてのイベント名とイベントスタンプを記録ディスパッチテーブルを作成します
3.3.1はテストテーブルを作成します。
mysql> drop table if exists events_list;
mysql> create table events_list(event_name varchar(20) not null, event_started timestamp not null);
3.3.2イベント1を作成する(すぐに開始イベント)
create event event_now
on schedule
at now() do insert into events_list values('event_now', now());
ビューイベントの実行結果
mysql> select * from events_list;
+------------+---------------------+
| event_name | event_started |
+------------+---------------------+
| event_now | 2014-07-01 04:06:40 |
+------------+---------------------+
イベント2の作成3.3.3(毎分開始イベント)
create event test.event_minute
on schedule
every 1 minute do insert into events_list values('event_now', now());
ビューイベントの実行結果
mysql> select * from events_list;
+------------+---------------------+
| event_name | event_started |
+------------+---------------------+
| event_now | 2014-07-01 04:26:53 |
| event_now | 2014-07-01 04:27:53 |
| event_now | 2014-07-01 04:28:53 |
+------------+---------------------+
イベント3の作成3.3.3(秒あたりのイベントを開始)
CREATE event event_now
ON SCHEDULE
EVERY 1 SECOND DO INSERT INTO event_test VALUES(1);
イベント4の作成3.3.4(コールストアドプロシージャあたり)
CREATE DEFINER=`root`@`localhost` EVENT `eventUpdateStatus` ON SCHEDULE EVERY 1 SECOND STARTS '2017-11-21 00:12:44' ON COMPLETION PRESERVE ENABLE DO call updateStatus()
3.4注:
作成されたデフォルトイベントが現在のライブラリに保存され、また、ライブラリが作成された指定されたイベントを表示することができる
唯一の現行ライブラリー・イベントが作成されたビューを表示するイベントによって
直ちにイベントの実装後にそのようなイベントの実装としてリリースを実行しているイベントを、それは、自動的にイベントを複数回呼び出すか、イベントを表示することができ、実行されるのを待って、削除されます。
同時に2つのイベントが呼び出す必要がある場合は、順序を指定したい場合は、mysqlは、別の事件1秒後に少なくとも1つのイベントの実施を確保する必要が彼らの呼び出しの順序を決定する
再帰的なスケジュールされたイベントのために、終了日は、開始日の前にすることはできません。
選択し実行していないかのように、一つのイベントに含まれていますが、彼の結果が消えることができます。
4ビューイベント
ビュー現在のライブラリのイベントは、mysql> show events;
すべてのイベントを見ますmysql> select * from mysql.event;
歴史記事:
JAVAマイクロチャネルの企業が(取得するには10分)の支払いを変更するには、
取得方法を許可マイクロ文字とのユーザーのOpenIDの手順
マイクロ環境シグナルを同時に許可複数のページをサポート
署名アルゴリズムMD5とHMAC-SHA256のマイクロチャネル2種類