跳转到主要内容
在 ClickHouse Cloud 中查询此系统表中的数据分别保存在 ClickHouse Cloud 各节点的本地。因此,如需查看所有数据的完整情况,需要使用 clusterAllReplicas 函数。更多详情请参见此处

描述

包含最近异步作业的信息和状态 (例如表加载作业) 。该表中每个作业对应一行。还提供了一个用于将该表中信息可视化的工具 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) — 自开始执行以来经过的秒数。若作业尚未开始则为零;若作业已完成则为总执行时间。
  • 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) - 自开始执行以来经过的秒数。如果作业尚未开始,则为零;如果作业已完成,则为总执行时间。
每个作业都关联一个 pool,并在该池中启动。每个池都有固定的优先级,以及一个可变的最大工作线程数。优先级更高 (priority 值更低) 的作业会先运行。只要至少有一个更高优先级的作业处于就绪或执行状态,任何较低优先级的作业都不会启动。可以通过将作业设为更高优先级来提升其优先级 (但不能降低) 。例如,如果传入查询需要某个表,则该表的加载和启动相关作业会被提升优先级。作业在执行期间也可以被提升优先级,但不会从其 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。

示例

SELECT *
FROM system.asynchronous_loader
LIMIT 1
FORMAT Vertical
最后修改于 2026年6月10日