web-dev-qa-db-ja.com

クォーツスケジューラの各テーブルは何を意味しますか?

クォーツスケジューラがジョブのスケジュールと現在実行中のジョブの識別に使用するテーブルはほとんどありません。次の表を使用します。

 qrtz_fired_triggers
 qrtz_simple_triggers
 qrtz_simprop_triggers
 qrtz_cron_triggers
 qrtz_blob_triggers
 qrtz_triggers
 qrtz_job_details
 qrtz_calendars
 qrtz_paused_trigger_grps
 qrtz_locks
 qrtz_scheduler_state

では、これらの各テーブルの目的は何であり、それは何を単純化するのでしょうか?

前もって感謝します。

9
Nakul Kumar

最近クオーツの仕事をする機会がありました。私自身はこのトピックについて100%明確ではありません。私の個人的な経験からあなたの質問に答えるために最善を尽くします。

この基本的なフローを覚えておく必要があります-1.ジョブを作成します。 2.トリガーを作成します。 3.スケジューラー(ジョブ、トリガー)上記のすべてのテーブルは、上記の3つのステップに基づいています。

  1. qrtz_triggersは、トリガーの一般情報が保存される場所です。
  2. qrtz_simple_triggers、qrtz_simprop_triggers、qrtz_crons_triggers、qrtz_blob_triggersには、これらの特定の詳細を保存するqrtz_triggersとの外部キー関係があります。例cronには、それに固有のcron式があります。
  3. qrtz_job_detailsは、単に実行されるタスクです。
  4. qrtz_fired_triggersは、起動されたすべてのトリガーのログです。
  5. qrtz_pausedトリガーは、アクティブではないトリガーに関する情報を保存するためのものです。
  6. カレンダーは、トリガーの発砲スケジュールから時間ブロックを除外するのに役立ちます。たとえば、毎週平日の午前9時30分にジョブを起動するトリガーを作成し、その後、すべてのビジネスの休日を除外するカレンダーを追加できます。 (ウェブサイトから取得。私はそれに取り組んでいません)
  7. 正直なところ、qrtz_locks、qrtz_scheduler_sateテーブルでは機能していません。

MySQLワークベンチを使用してリバースエンジニアリングしたこの画像を確認してください。 enter image description here

11
Kedar

Qrtz_lockおよびqrtz_scheduler_sateテーブルにいくつかの入力を提供できます。

  1. qrtz_lockは、複数のノードを実行しているときに、クラスター環境でtrigger_accessにロックされているインスタンスをキャプチャするためのものです。実行中のジョブがクラスター内のすべてのノードで実行されないというシナリオを回避するため。

  2. qrtz_scheduler_stateはノードの状態をキャプチャするためのもので、いずれかの場合に1つのノードがダウンしたり、ジョブの1つを実行できなかったりすると、クラスタリングモードで実行されている他のインスタンスが誤って起動したジョブを選択できます。

0
chetan mahajan