イベント(EVENT)は、特定の時刻または指定された時間間隔で自動実行される、事前定義されたSQLタスクです。各イベントは、トリガー条件(つまりスケジュール計画)と、実行するSQL文またはストアドプロシージャで構成されています。イベントの定義はデータベースに保存され、データベースと共にメンテナンスされるため、サーバーが再起動してもイベントは計画通りに実行されます。
トリガーとは異なり、トリガーはデータ操作に基づいてSQL実行をトリガーしますが、EVENTは時間の変化に基づいてSQL実行をトリガーします。これにより、ユーザーは事前設定された時間計画に従って、SQL文やストアドプロシージャを自動実行できます。この機能により、データベースの自動処理能力が大幅に向上し、定期的なデータメンテナンス、統計集計、定時通知など、多様なシナリオに適しています。
説明
OceanBaseデータベースV4.2.5では、V4.2.5 BP2バージョンから、イベントでcallステートメントを実行してストアドプロシージャを呼び出すことができるようになりました。開始時刻や終了時刻の設定では、時間式や関数をサポートしています。
機能特長:
スケジュールルール:
- 絶対時刻:イベントを特定の時刻に1回だけ実行するように設定できます。
- 定期的実行:秒、分、時間、日、月などの周期で繰り返し実行することをサポートします。
- 複雑なスケジューリング:
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回失敗すると、実行は停止します。