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
値)ジョブが最初に実行されます。少なくとも1つの優先度の高いジョブが準備または実行中の場合、より低い優先度のジョブは開始されません。ジョブの優先度は、優先度を上げることで高めることができますが、下げることはできません。たとえば、テーブルのロードやスタートアップのためのジョブは、そのテーブルが必要とするクエリが受信された場合に優先されます。ジョブの実行中に優先度を上げることが可能ですが、ジョブはその execution_pool
から新しく割り当てられた pool
に移動されることはありません。ジョブは、新しいジョブを作成するために 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。