イベント(EVENT)とは、特定の時間点または指定された時間間隔に基づいて自動的に実行される予約済みのSQLタスクです。各イベントは、トリガー条件(つまりスケジュールプラン)、実行するSQLステートメント、またはストアドプロシージャで構成されています。イベントの定義はデータベースに保存され、データベースとともにメンテナンスされることで、サーバーの再起動をしてもイベントが予定どおりに実行されることを保証します。
トリガーとは異なり、トリガーはデータ操作に基づいてSQLの実行をトリガーし、EVENTは時間変化に基づいてSQLの実行をトリガーします。これはユーザーが事前に設定された時間計画に基づいてSQLステートメントやストアドプロシージャを自動的に実行できるようにします。この機能により、データベースの自動処理能力が大幅に向上し、定期的なデータメンテナンス、統計集計、タイマーメッセージ送信など、さまざまなシナリオに適しています。
説明
OceanBaseデータベースV4.2.5バージョンでは、V4.2.5 BP2バージョンから始めて、callステートメントによるストアドプロシージャの呼び出しをサポートし、開始時間または終了時間を設定する際に、時間表現と関数をサポートしました。
機能の特徴:
スケジュールルール:
- 精密な時間点:イベントが特定の時間点で一度だけ実行されるように設定できます。
- 再生実行:秒、分、時間、日、月などの周期で繰り返し実行することをサポートしています。
- 複雑なスケジュール:
EVERY、STARTS、ENDSなどのキーワードを組み合わせて使用することで、複雑なスケジュールロジックを実現します。例えば、営業日のみ実行する、特定の日付範囲内で実行するなど。
SQLサポート:
- データの挿入、更新、削除を含むすべての有効なSQLステートメントを実行できます。
- トランザクション処理をサポートしており、イベント実行の原子性と整合性を保証します。
ダイナミックコントロール:
- 実行時においてイベントスケジューラを動的に有効化または無効化でき、サービスの再起動は不要です。
- 既存のイベントを修正または削除でき、ビジネス要件の変更に対応します。
権限要件
EVENTを使用するには、GRANT EVENT権限が必要です。OceanBaseデータベースの権限の詳細については、MySQLモードの権限分類を参照してください。
EVENTの起動・停止
イベントは特別なイベントスケジューラスレッドによって実行されます。イベントスケジューラを有効化/無効化する方法は以下の通りです。
イベントスケジューラを有効にする:
obclient> SET GLOBAL event_scheduler = ON;イベントスケジューラを無効にする:
obclient> SET GLOBAL event_scheduler = OFF;
使用方法と注意事項
EVERY intervalにSTART TIMEを設定しない場合、END TIMEが設定されていない限り、イベントは無限に実行されます。- 再生イベントの場合、イベントの実行時間がスケジュール間隔よりも長くなると、同じ時間帯に複数のイベントが同時に実行される可能性があります。このため、ユーザー自身で実行時間をスケジュール間隔より短く保つ必要があります。
- 最大実行時間(単発イベントの最大実行時間24時間)を設定することはできません。
- 1つのイベントから別のイベントを作成することは推奨されません。
- 開始したイベントは、その後のスケジュール計画の変更は許可されません。
- 開始したイベントでは、
event_nameの変更は推奨されません。変更すると、正しく終了できなくなる可能性があります。 - そのイベントが連続して16回実行に失敗すると、動作が停止します。