system.asynchronous_loader
このシステムテーブルのデータは、ClickHouse Cloud の各ノードにローカルに格納されています。そのため、すべてのデータを包括的に確認するには、clusterAllReplicas 関数を使用する必要があります。詳細についてはこちらを参照してください。
説明
最近の非同期ジョブ (例: テーブルのロード) に関する情報およびステータスを含みます。このテーブルには、各ジョブごとに 1 行が格納されます。このテーブルの情報を可視化するためのツールとして utils/async_loader_graph が用意されています。
カラム
job(String) — ジョブ名 (一意でない場合があります) 。job_id(UInt64) — ジョブの一意な ID。dependencies(Array(UInt64)) — このジョブの前に完了している必要があるジョブの ID の一覧。dependencies_left(UInt64) — まだ完了していない依存関係の現在数。status(Enum8('PENDING' = 0, 'OK' = 1, 'FAILED' = 2, 'CANCELED' = 3)) — ジョブの現在のロード状態です。PENDING: ロードジョブはまだ開始されていません。OK: ロードジョブは実行され、正常に完了しました。FAILED: ロードジョブは実行されましたが失敗しました。CANCELED: ロードジョブは、削除または依存関係の失敗により実行されません。is_executing(UInt8) — このジョブは現在ワーカーによって実行中です。is_blocked(UInt8) — このジョブは依存関係の完了を待機しています。is_ready(UInt8) — このジョブは実行可能な状態で、ワーカーを待機しています。elapsed(Float64) — 実行開始からの経過秒数。ジョブが開始されていない場合は 0 です。ジョブが完了している場合は総実行時間です。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 キューから、次に実行するジョブを取得します。実行可能なジョブが複数ある場合は、ready_seqnoの値が最も小さいジョブが選択されます。waiters(UInt64) — このジョブを待機しているスレッド数。exception(Nullable(String)) — 失敗またはキャンセルされたジョブでは null ではありません。クエリ実行中に発生したエラーメッセージ、またはこのジョブのキャンセルにつながったエラー内容を、依存関係の失敗チェーンに含まれるジョブ名とともに保持します。schedule_time(DateTime64(6)) — ジョブが作成され、実行するようスケジュールされた時刻 (通常はすべての依存関係とともに) 。enqueue_time(Nullable(DateTime64(6))) — ジョブが実行可能になり、そのプールの ready キューにエンキューされた時刻。ジョブがまだ実行可能でない場合は Null です。start_time(Nullable(DateTime64(6))) — ワーカーが ready キューからジョブをデキューし、実行を開始した時刻。ジョブがまだ開始されていない場合は Null です。finish_time(Nullable(DateTime64(6))) — ジョブの実行が完了した時刻。ジョブがまだ完了していない場合は Null です。
保留中のジョブは、次のいずれかの状態になる場合があります。
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 キューから次に実行するジョブを取得します。複数の実行可能ジョブがある場合、ready_seqnoの値が最も小さいジョブが選択されます。 -
waiters(UInt64) - このジョブを待機しているスレッド数。 -
exception(Nullable(String)) - 失敗またはキャンセルされたジョブに対して非 Null。クエリ実行中に発生したエラーメッセージ、またはこのジョブのキャンセルの原因となったエラーと、それに至る依存関係の失敗によるジョブ名のチェーンを保持します。
ジョブのライフタイム中の時刻情報:
schedule_time(DateTime64) - ジョブが作成され、 (通常はすべての依存関係とともに) 実行するようスケジュールされた時刻。enqueue_time(Nullable(DateTime64)) - ジョブが実行可能になり、そのプールの ready キューにエンキューされた時刻。ジョブがまだ実行可能でなければ Null。start_time(Nullable(DateTime64)) - ワーカーが ready キューからジョブをデキューし、その実行を開始した時刻。ジョブがまだ開始されていなければ Null。finish_time(Nullable(DateTime64)) - ジョブの実行が完了した時刻。ジョブがまだ完了していなければ Null。