system.processors_profile_log
在 ClickHouse Cloud 中进行查询
该系统表中的数据保存在 ClickHouse Cloud 中每个节点的本地。因此,如需获得所有数据的完整视图,需要使用 clusterAllReplicas 函数。更多详情请参阅此处。
描述
此表包含处理器级别的性能分析信息 (可以在 EXPLAIN PIPELINE 中查看) 。
列
hostname(LowCardinality(String)) — 执行该查询的服务器主机名。event_date(Date) — 事件发生的日期。event_time(DateTime) — 事件发生的日期和时间。event_time_microseconds(DateTime64(6)) — 事件发生的日期和时间,精确到微秒。id(UInt64) — 处理器的 ID。parent_ids(Array(UInt64)) — 父处理器的 ID 列表。plan_step(UInt64) — 创建此处理器的查询计划步骤 ID。如果该处理器不是由任何步骤添加的,则该值为 0。plan_step_name(String) — 创建此处理器的查询计划步骤名称。如果该处理器不是由任何步骤添加的,则该值为空。plan_step_description(String) — 创建此处理器的查询计划步骤描述。如果该处理器不是由任何步骤添加的,则该值为空。plan_group(UInt64) — 如果该处理器由查询计划步骤创建,则表示其所属分组。分组是对同一查询计划步骤添加的处理器进行的逻辑划分。该分组仅用于美化 EXPLAIN PIPELINE 结果的展示。initial_query_id(String) — 初始查询的 ID (用于分布式查询执行) 。query_id(String) — 查询的 ID。name(LowCardinality(String)) — 处理器名称。elapsed_us(UInt64) — 此处理器执行所用的微秒数。input_wait_elapsed_us(UInt64) — 此处理器等待数据 (来自其他处理器) 所用的微秒数。output_wait_elapsed_us(UInt64) — 此处理器因输出端口已满而等待的微秒数。input_rows(UInt64) — 处理器消耗的行数。input_bytes(UInt64) — 处理器消耗的字节数。output_rows(UInt64) — 处理器生成的行数。output_bytes(UInt64) — 处理器生成的字节数。processor_uniq_id(String) — 管道中处理器的唯一 ID。step_uniq_id(String) — 查询计划中步骤的唯一 ID。
示例
查询:
结果:
这里可以看到:
ExpressionTransform在执行sleep(1)函数,因此它的work将耗时约 1e6 微秒,所以elapsed_us> 1e6。SourceFromSingleChunk需要等待,因为ExpressionTransform在执行sleep(1)期间不接受任何数据,所以它将处于PortFull状态约 1e6 微秒,因此output_wait_elapsed_us> 1e6。LimitsCheckingTransform/NullSource/LazyOutputFormat需要等到ExpressionTransform执行完sleep(1)后才能处理结果,因此input_wait_elapsed_us> 1e6。