MySQL のイベント スケジューラ EVENT は、Unix crontab や Windows タスク スケジューラと同様に、スケジュールされたタスクとも呼ばれます。 EVENT は、その名前とそれが存在するスキーマによって一意に識別されます。 EVENT はスケジュールに従って特定のアクションを実行します。操作は、BEGIN...END ステートメント ブロックである SQL ステートメントで構成されます。イベントは 1 回限りでも繰り返しでもかまいません。ワンタイムイベントは一度だけ実行されますが、定期イベントは一定の間隔で繰り返し実行されます。定期イベントには開始日時と終了日時を指定できます。 (デフォルトでは、定期的なイベントは作成後すぐに開始され、無効にされるか削除されるまで無期限に継続します。) EVENT は特別なイベント スケジューラ スレッドによって実行され、SHOW PROCESSLIST を使用して表示できます。 root@database-one 13:44: [gftest]> '%scheduler%' のような変数を表示します。 +-----------------+-------+ | 変数名 | 値 | +-----------------+-------+ | イベントスケジューラ | オフ | +-----------------+-------+ セット内の1行(0.01秒) root@database-one 13:46: [gftest]> プロセスリストを表示します。 +--------+------+----------------------+-----------+--------+----------+----------+------------------+ | ID | ユーザー | ホスト | db | コマンド | 時間 | 状態 | 情報 | +--------+------+----------------------+-----------+--------+----------+----------+------------------+ ...... +--------+------+----------------------+-----------+--------+----------+----------+------------------+ セット内の行数は 245 行です (0.00 秒) root@database-one 13:46: [gftest]> グローバルevent_schedulerを1に設定します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) root@database-one 13:47: [gftest]> '%scheduler%' のような変数を表示します。 +-----------------+-------+ | 変数名 | 値 | +-----------------+-------+ | イベントスケジューラ | オン | +-----------------+-------+ セット内の1行(0.01秒) root@database-one 13:47: [gftest]> プロセスリストを表示します。 +--------+----------------------+---------+---------+-------+------------------+------------------+ | ID | ユーザー | ホスト | db | コマンド | 時間 | 状態 | 情報 | +--------+----------------------+---------+---------+-------+------------------+------------------+ ...... | 121430 | event_scheduler | localhost | NULL | デーモン | 33 | 空のキューを待機中 | NULL | ...... +--------+----------------------+---------+---------+-------+------------------+------------------+ セット内の行数は 246 行 (0.01 秒) ご覧のとおり、デフォルトでは MySQL の EVENT はオンになっていません。event_scheduler パラメータを設定することで、EVENT をオンまたはオフにすることができます。開くと、イベント スケジューラ スレッドである event_scheduler が追加されます。 開く、閉じるだけでなく、無効にすることもできます。EVENT を無効にするには、次の 2 つの方法のいずれかを使用します。
MySQL 5.7 で EVENT を作成するための完全な構文は次のとおりです。 作成する [定義者 = ユーザー] イベント [存在しない場合] イベント名 スケジュール通りのスケジュール [完了時に保存しない] [有効 | 無効 | スレーブで無効] [コメント '文字列'] event_bodyを実行します。 スケジュール: AT タイムスタンプ [+ INTERVAL 間隔] ... | すべての間隔 [STARTS タイムスタンプ [+ INTERVAL 間隔] ...] [ENDS タイムスタンプ [+ INTERVAL 間隔] ...] 間隔: 数量 {年 | 四半期 | 月 | 日 | 時間 | 分 | 週 | 秒 | 年_月 | 日_時間 | 日_分 | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND} 詳細な手順については、公式ウェブサイト https://dev.mysql.com/doc/refman/5.7/en/create-event.html を参照してください。 例を通してこれを検証してみましょう。 root@database-one 13:47: [gftest]> テーブル testevent を作成します(id int auto_increment primary key,create_time datetime); クエリは正常、影響を受けた行は 0 行 (0.01 秒) root@database-one 13:50: [gftest]> testevent から * を選択します。 空のセット (0.00 秒) 2) イベントを作成し、3 秒ごとにテーブルにレコードを挿入します。 root@database-one 13:50: [gftest]> スケジュールに従って3秒ごとにイベント insert_date_testevent を作成します。 -> testevent(create_time) に値(now()) を挿入します。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) root@database-one 13:53: [gftest]> イベントを表示 \G ************************** 1. 行 **************************** Db: ガールフレンド 名前: insert_date_testevent 定義者: root@% タイムゾーン: +08:00 タイプ: 定期 実行場所: NULL 間隔値: 3 間隔フィールド: SECOND 開始: 2020-03-26 13:53:10 終了: NULL ステータス: 有効 発信者: 1303306 文字セットクライアント: utf8 照合接続: utf8_general_ci データベース照合: utf8_general_ci セット内の 1 行 (0.00 秒) 3) しばらくしてから、テーブル内のデータをクエリします。 root@database-one 13:53: [gftest]> testevent から * を選択します。 +----+---------------------+ | id | 作成時間 | +----+---------------------+ | 1 | 2020-03-26 13:53:10 | | 2 | 2020-03-26 13:53:13 | | 3 | 2020-03-26 13:53:16 | | 4 | 2020-03-26 13:53:19 | | 5 | 2020-03-26 13:53:22 | | 6 | 2020-03-26 13:53:25 | | 7 | 2020-03-26 13:53:28 | | 8 | 2020-03-26 13:53:31 | | 9 | 2020-03-26 13:53:34 | | 10 | 2020-03-26 13:53:37 | | 11 | 2020-03-26 13:53:40 | | 12 | 2020-03-26 13:53:43 | | 13 | 2020-03-26 13:53:46 | | 14 | 2020-03-26 13:53:49 | | 15 | 2020-03-26 13:53:52 | | 16 | 2020-03-26 13:53:55 | +----+---------------------+ セット内の行数は 16 です (0.00 秒) 表のデータから、作成された挿入タイマー タスクが正常に実行されていることがわかります。 show event コマンドを使用するほか、mysql.event または information_schema.events から EVENT の詳細情報を照会したり、show create event コマンドを使用して表示したりすることもできます。 root@database-one 00:09: [gftest]> mysql.event \G から * を選択します ************************** 1. 行 **************************** db:gfテスト 名前: insert_date_testevent 本文: testevent(create_time) values(now()) に挿入 定義者: root@% 実行時: NULL 間隔値: 3 間隔フィールド: 秒 作成日: 2020-03-26 13:53:10 更新日時: 2020-03-26 13:53:10 最終実行日時: 2020-03-26 16:09:37 開始: 2020-03-26 05:53:10 終了: NULL ステータス: 有効 on_completion: ドロップ sql_mode: ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION コメント: 発信者: 1303306 タイムゾーン: +08:00 文字セットクライアント: utf8 照合接続: utf8_general_ci db_照合順序: utf8_general_ci body_utf8: testevent(create_time) に値(now()) を挿入します セット内の 1 行 (0.00 秒) root@database-one 00:09: [gftest]> information_schema.events \G から * を選択します ************************** 1. 行 **************************** EVENT_CATALOG: 定義 イベント_スキーマ: gftest EVENT_NAME: insert_date_testevent 定義者: root@% タイムゾーン: +08:00 EVENT_BODY: SQL EVENT_DEFINITION: testevent(create_time) values(now()) に挿入します。 イベントタイプ: 繰り返し 実行時: NULL 間隔値: 3 INTERVAL_FIELD: 秒 SQL_MODE: ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION 開始: 2020-03-26 13:53:10 終了: NULL ステータス: 有効 ON_COMPLETION: 保存しない 作成日: 2020-03-26 13:53:10 最終更新日時: 2020-03-26 13:53:10 最終実行日時: 2020-03-27 00:10:22 イベントコメント: 発信者: 1303306 文字セットクライアント: utf8 照合接続: utf8_general_ci データベース照合順序: utf8_general_ci セット内の1行(0.02秒) root@database-one 00:10: [gftest]> 作成イベントを表示 insert_date_testevent \G ************************** 1. 行 **************************** イベント: insert_date_testevent sql_mode: ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION タイムゾーン: +08:00 イベントの作成: CREATE DEFINER=`root`@`%` EVENT `insert_date_testevent` ON SCHEDULE EVERY 3 SECOND STARTS '2020-03-26 13:53:10' ON COMPLETION NOT PRESERVE ENABLE DO insert into testevent(create_time) values(now()) 文字セットクライアント: utf8 照合接続: utf8_general_ci データベース照合: utf8_general_ci セット内の 1 行 (0.00 秒) 以上がMySQLのイベントスケジューラEVENTの詳しい内容です。MySQLのイベントスケジューラEVENTの詳細については、123WORDPRESS.COMの他の関連記事にも注目してください。 以下もご興味があるかもしれません:
|
>>: Centos8 で Apache httpd2.4.37 を使用して Web サーバーをインストールする詳細な手順
目次1. 双方向データバインディングとは1. データの双方向バインディングを実装する必要があるのはな...
長い間コンピューターで mysql を使用していなかったので、パスワードを忘れてしまいました。でも、...
JSを使用して、参考用の簡単な計算機を完成させます。具体的な内容は次のとおりです。要件: 入力値は数...
前面に書かれたfilter:blur と filter:contrast がこのような素晴らしい化学...
当初の意図は、element-ui の $notify 通知をコンポーネントにカプセル化することでし...
目次1. v-bindの主要ソースコードの分析1. v-bind属性はどこに均一に保存されるか: a...
サーバーの画像が他のウェブサイトからホットリンクされると、サーバーの帯域幅とアクセス速度に影響します...
場合によっては、データ内のデータを再利用する必要がありますが、データ内のデータはさまざまなフォーム、...
Nginx を使用して同じドメイン名で複数のプロジェクトを構成するには、次の 2 つの方法があります...
目次序文構築可能なスタイルシートとは何ですか? CSSモジュールスクリプトの使用インポートアサーショ...
目次序文1. ルーティングの遅延読み込み1. ルートの遅延読み込みが必要なのはなぜですか? 2. ル...
目次1. ページの概要2. 下限と上限3. ページディレクトリを使用する4. ページの実際の外観4....
1. Centos7をダウンロードするダウンロードアドレス: https://mirrors.tun...
目次1. 概要2. 名前フィールド3. バージョンフィールド4. 説明フィールド5. キーワードフィ...
目次1. 匿名スロット2. 名前付きスロット要約するスロット (slot) は、Vue のコンテンツ...