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_seqnoの値が最も小さいジョブが選択されます。waiters(UInt64) — このジョブを待機しているスレッドの数。exception(Nullable(String)) — 失敗およびキャンセルされたジョブでは null ではありません。クエリ実行中に発生したエラーメッセージ、またはこのジョブのキャンセルにつながったエラーと、その依存関係の失敗に関するジョブ名のチェーンを保持します。schedule_time(DateTime64(6)) — ジョブが作成され、(通常はすべての依存関係とともに)実行予定としてスケジュールされた時刻。enqueue_time(Nullable(DateTime64(6))) — ジョブがレディ状態になり、そのプールのレディキューにエンキューされた時刻。ジョブがまだレディでない場合は null。start_time(Nullable(DateTime64(6))) — ワーカーがレディキューからジョブをデキューして実行を開始した時刻。ジョブがまだ開始されていない場合は null。finish_time(Nullable(DateTime64(6))) — ジョブの実行が終了した時刻。ジョブがまだ終了していない場合は null。
保留中のジョブは、次のいずれかの状態になります:
is_executing(UInt8) - ジョブは現在ワーカーによって実行されています。is_blocked(UInt8) - ジョブは依存関係の完了を待っています。is_ready(UInt8) - ジョブは実行可能な状態で、ワーカーを待っています。elapsed(Float64) - 実行開始から経過した秒数。ジョブが開始されていない場合は 0。ジョブが終了している場合は合計実行時間です。
すべてのジョブには関連付けられたプールがあり、そのプール内で開始されます。各プールには一定の優先度と可変のワーカー最大数があります。優先度が高い(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。