system.asynchronous_loader
このシステムテーブルのデータは、ClickHouse Cloudの各ノードにローカルに保存されています。したがって、すべてのデータの完全なビューを取得するには、clusterAllReplicas
関数が必要です。詳細については、こちらをご覧ください。
最近の非同期ジョブ(例:読み込み中のテーブル)の情報と状態を含みます。このテーブルには、各ジョブの行が含まれています。このテーブルの情報を可視化するためのツール utils/async_loader_graph
があります。
例:
カラム:
job
(String
) - ジョブ名(必ずしもユニークであるとは限りません)。job_id
(UInt64
) - ジョブのユニークID。dependencies
(Array(UInt64)
) - このジョブの前に実行されるべきジョブのIDリスト。dependencies_left
(UInt64
) - 現在残っている依存関係の数。status
(Enum
) - ジョブの現在のロード状況:PENDING
: ロードジョブがまだ開始されていません。OK
: ロードジョブが実行され、成功しました。FAILED
: ロードジョブが実行され、失敗しました。CANCELED
: ロードジョブは、削除や依存関係の失敗により実行されない予定です。
保留中のジョブは次のいずれかの状態にある可能性があります:
is_executing
(UInt8
) - ジョブが現在ワーカーによって実行されています。is_blocked
(UInt8
) - ジョブはその依存関係が完了するのを待っています。is_ready
(UInt8
) - ジョブは実行の準備ができており、ワーカーを待っています。elapsed
(Float64
) - 実行開始から経過した秒数。ジョブが開始されていない場合はゼロ。ジョブが完了した場合の合計実行時間。
すべてのジョブにはそれに関連付けられたプールがあり、此のプール内で開始されます。各プールには一定の優先度と変更可能な最大ワーカー数があります。優先度の高い(低い priority
値の)ジョブが最初に実行されます。高い優先度のジョブが実行中または準備中の場合、低い優先度のジョブは開始されません。ジョブの優先度は、優先順位を設定することによって引き上げることができます(下げることはできません)。たとえば、テーブルの読み込みや起動のためのジョブは、受信クエリがこのテーブルを必要とする場合に優先されます。実行中にジョブの優先順位を上げることが可能ですが、ジョブはその execution_pool
から新しく割り当てられた pool
に移動することはありません。ジョブは、優先度 inversion を避けるために新しいジョブを作成する際に pool
を使用します。すでに開始されたジョブは、より高い優先度のジョブによって奪われることはなく、開始された後は常に完了するまで実行されます。
-
pool_id
(UInt64
) - 現在ジョブに割り当てられているプールのID。 -
pool
(String
) -pool_id
プールの名前。 -
priority
(Int64
) -pool_id
プールの優先度。 -
execution_pool_id
(UInt64
) - ジョブが実行されているプールのID。実行が開始される前に割り当てられたプールと等しい。 -
execution_pool
(String
) -execution_pool_id
プールの名前。 -
execution_priority
(Int64
) -execution_pool_id
プールの優先度。 -
ready_seqno
(Nullable(UInt64)
) - 準備ができているジョブの場合は null でない。ワーカーは、そのプールの準備キューから次に実行されるジョブを引き出します。複数の準備済みジョブがある場合は、ready_seqno
の値が最も低いジョブが選ばれます。 -
waiters
(UInt64
) - このジョブを待機しているスレッドの数。 -
exception
(Nullable(String)
) - 失敗したジョブおよびキャンセルされたジョブの場合は null でない。クエリ実行中に発生したエラーメッセージまたはこのジョブのキャンセルにつながったエラーを保持し、依存関係の失敗チェーンのジョブ名を含みます。
ジョブのライフタイム中の時間点:
schedule_time
(DateTime64
) - ジョブが作成され、スケジュールされて実行される時間(通常、すべての依存関係と共に)。enqueue_time
(Nullable(DateTime64)
) - ジョブが準備完了となり、このプールの準備キューにエンキューされた時間。ジョブがまだ準備できていない場合は null。start_time
(Nullable(DateTime64)
) - ワーカーが準備キューからジョブをデキューし、実行を開始した時間。ジョブがまだ開始されていない場合は null。finish_time
(Nullable(DateTime64)
) - ジョブの実行が完了した時間。ジョブがまだ完了していない場合は null。