1. イベントの簡単な紹介 イベントは、MySQL が特定の時間に呼び出す手続き型データベース オブジェクトです。イベントは一度だけ呼び出すことも、定期的に開始することもできます。これは、いわゆる「イベント スケジューラ」と呼ばれる特定のスレッドによって管理されます。 イベントは、何かが発生したときにトリガーされるという点でトリガーに似ています。トリガーはデータベース上でステートメントが開始されたときに起動されますが、イベントはスケジュールされたイベントに基づいて起動されます。互いに類似しているため、イベントは一時トリガーとも呼ばれます。 イベントは、以前はオペレーティング システムのスケジュールされたタスクによってのみ実行可能であった作業を置き換えます。MySQL のイベント スケジューラは 1 秒あたり 1 つのタスクを正確に実行できますが、オペレーティング システムのスケジュールされたタスク (Linux の CRON や Windows のタスク スケジューリングなど) は 1 分あたり 1 回しか実行できません。 2 イベントのメリットとデメリット 2.1 利点 データに対する一部のスケジュールされた操作は、外部プログラムに依存せず、データベース自体が提供する関数を直接使用します。 2.2 デメリット 時間指定トリガー。呼び出すことができません。 3 イベントを作成する 作成イベント ステートメントはイベントを作成します。各イベントは 2 つの主要な部分で構成されます。最初の部分はイベント スケジュールで、イベントがいつ開始され、どのくらいの頻度で開催されるかを示します。 2番目の部分はイベントアクションで、イベントがトリガーされたときに実行されるコードです。イベントアクションには、単純な挿入または更新ステートメント、またはストアドプロシージャまたは イベントはアクティブ (オープン) または非アクティブ (クローズ) になります。アクティブとは、イベント スケジューラがイベント アクションを呼び出す必要があるかどうかをチェックすることを意味し、非アクティブとは、イベントの宣言がカタログに保存されているが、スケジューラがそれを呼び出す必要があるかどうかをチェックしないことを意味します。イベントは作成されるとすぐにアクティブになります。アクティブなイベントは 1 回または複数回実行できます。 3.1 作成構文は以下のとおりです 作成する [定義者 = { ユーザー | 現在のユーザー }] イベント [存在しない場合] イベント名 スケジュール通りのスケジュール [完了時に保存しない] [有効 | 無効 | スレーブで無効] [コメント'コメント'] event_bodyを実行します。 スケジュール: AT タイムスタンプ [+ INTERVAL 間隔] ... | すべての間隔 [STARTS タイムスタンプ [+ INTERVAL 間隔] ...] [ENDS タイムスタンプ [+ INTERVAL 間隔] ...] 間隔: 数量 {年 | 四半期 | 月 | 日 | 時間 | 分 | 週 | 秒 | 年_月 | 日_時間 | 日_分 | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND} 用語集: event_name: 作成するイベントの名前 (一意に決定されます)。 3.2 イベントスケジューラの有効化と無効化 3.2.1 MySQL イベント スケジューラ event_scheduler はイベントの呼び出しを担当し、デフォルトでは閉じられています。このスケジューラは、イベントが呼び出されるかどうかを常に監視します。イベントを作成するには、スケジューラを開く必要があります。 mysql> '%event_scheduler%' のような変数を表示します。 +-----------------+-------+ | 変数名 | 値 | +-----------------+-------+ | イベントスケジューラ | オフ | +-----------------+-------+ 3.2.2 イベントスケジューラを有効にする コマンドライン経由 以下のコマンドラインのいずれかを使用できます グローバルイベントスケジューラを ON に設定します。 @@global.event_scheduler を ON に設定します。 グローバルイベントスケジューラを 1 に設定します。 @@global.event_scheduler を 1 に設定します。 設定ファイルmy.cnfを通じて event_scheduler = 1 #またはON スケジューラスレッドの表示 mysql> プロセスリストを表示します。 +----+-----------------+-----------+--------+--------+--------+------------------+------------------+ | ID | ユーザー | ホスト | db | コマンド | 時間 | 状態 | 情報 | +----+-----------------+-----------+--------+--------+--------+------------------+------------------+ | 2 | root | localhost | NULL | クエリ | 0 | NULL | プロセスリストを表示 | | 3 | event_scheduler | localhost | NULL | デーモン | 6 | 空のキューを待機中 | NULL| +----+-----------------+-----------+--------+--------+--------+------------------+------------------+ 3.2.3 イベントスケジューラをオフにする コマンドライン経由 以下のコマンドラインのいずれかを使用できます グローバルイベントスケジューラを OFF に設定します。 @@global.event_scheduler を OFF に設定します。 グローバルイベントスケジューラを 0 に設定します。 @@global.event_scheduler を 0 に設定します。 設定ファイルmy.cnfを通じて [mysqld]の下に追加 event_scheduler = 0 #またはOFF、DISABLED スケジューラスレッドの表示 mysql> プロセスリストを表示します。 +----+------+-----------+---------+-------+-------+-------+-----------------+ | ID | ユーザー | ホスト | db | コマンド | 時間 | 状態 | 情報 | +----+------+-----------+---------+-------+-------+-------+-----------------+ | 2 | root | localhost | NULL | クエリ | 0 | NULL | プロセスリストを表示 | +----+------+-----------+---------+-------+-------+-------+-----------------+ 3.3 例: 各イベントディスパッチの名前とイベントスタンプを記録するテーブルを作成する 3.3.1 テストテーブルを作成する mysql> events_list が存在する場合はテーブルを削除します。 mysql> events_listテーブルを作成します(event_name varchar(20) not null、event_started timestamp not null); 3.3.2 イベント1を作成する(イベントをすぐに開始する) イベントを作成 event_now 予定通り 現在() events_list に値 ('event_now'、now()) を挿入します。 イベント実行結果の表示 mysql> events_list から * を選択します。 +------------+---------------------+ | イベント名 | イベント開始 | +------------+---------------------+ | イベント_now | 2014-07-01 04:06:40 | +------------+---------------------+ 3.3.3 イベント2を作成する(1分ごとにイベントを開始する) イベント test.event_minute を作成する 予定通り 1分ごとに events_list に値 ('event_now'、now()) を挿入します。 イベント実行結果の表示 mysql> events_list から * を選択します。 +------------+---------------------+ | イベント名 | イベント開始 | +------------+---------------------+ | イベント_now | 2014-07-01 04:26:53 | | イベント_now | 2014-07-01 04:27:53 | | イベント_now | 2014-07-01 04:28:53 | +------------+---------------------+ 3.3.3 イベント3を作成する(1秒ごとにイベントを開始する) イベントを作成 event_now 予定通り 1秒ごとに event_test VALUES(1)にINSERTします。 3.3.4 イベント 4 を作成する (1 秒ごとにストアド プロシージャを呼び出す) CREATE DEFINER=`root`@`localhost` イベント `eventUpdateStatus` 1秒ごとにスケジュールどおり 開始時刻 '2017-11-21 00:12:44' 完了時に保存 有効にする updateStatus() を呼び出す 3.4 注記: デフォルトでは、作成されたイベントは現在のライブラリに保存されます。指定したイベントが作成されたライブラリを表示することもできます。 現在のライブラリで作成されたイベントは、イベントの表示を通じてのみ表示できます。 イベントは実行後に解放されます。イベントが即時実行された場合は、実行後に自動的に削除されます。複数の呼び出しや待機中のイベントを表示できます。 2 つのイベントを同時に呼び出す必要がある場合、MySQL はそれらの呼び出し順序を決定します。順序を指定する場合は、1 つのイベントが他のイベントの少なくとも 1 秒後に実行されるようにする必要があります。 再帰的にスケジュールされたイベントの場合、終了日を開始日より前にすることはできません。 選択はイベントに含めることができますが、実行されなかったかのようにその結果は消えます。 4 イベントを表示 現在のライブラリのイベントを表示する mysql> イベントを表示します。 すべてのイベントを表示 mysql> mysql.event から * を選択します。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: docker-compose ポートと expose の違いの詳細な説明
>>: Vue で動的に読み込まれたローカル画像を処理する方法
データURI Data URI は、小さなファイルをドキュメントに直接埋め込むために RFC 239...
効果は非常にシンプルで、次のコードを自分のページにコピーして実行するだけです。コードをコピーコードは...
この記事では、MacでのMySQLインストールチュートリアルを参考までに紹介します。具体的な内容は次...
この記事では主に、CSS3 LESS で長いテキストの影を実装する方法を紹介し、皆さんと共有します。...
序文最近、MySQL のインデックスについて読んでいました。結合されたインデックスを見ると、左端の原...
H タグ、特に h1 タグの使用は常に議論の的となっている問題であり、私たちが研究する価値のある問題...
この記事の例では、vue3 が独自のページングコンポーネントをカプセル化する具体的なコードを参考まで...
CentOS 7にPostgreSQL 11をインストールする PostgreSQL: 世界で最も先...
% ワイルドカードを使用すると、インデックス失敗の問題が発生することがよくあります。ここでは、lik...
問題の説明: Macを購入し、初めてMySQLをインストールしました。初期パスワードが分かりません。...
この記事では、JavaScriptでシンプルな時計を実装するための具体的なコードを参考までに紹介しま...
この記事では、参考までにシンプルなHTMLショッピング数量アプレットを紹介します。具体的な内容は次の...
I. はじめにまず、MySQL のバージョンについて説明します。 mysql> バージョンを選...
まずはコードと効果を見てみましょう↓ <スタイル> 。主要 { アウトライン: 1px ...