system.mutations
描述
该表包含 Mutation 在 MergeTree 表上的执行信息及其进度。每条 mutation 命令对应一行记录。
列:
database(String) — 应用了该 mutation 的数据库名称。table(String) — 应用了该 mutation 的表名称。mutation_id(String) — mutation 的 ID。对于复制表,这些 ID 对应于 ClickHouse Keeper 中<table_path_in_clickhouse_keeper>/mutations/目录下的 znode 名称。对于非复制表,这些 ID 对应于表数据目录中的文件名。command(String) — mutation 命令字符串 (即 ALTER TABLE [db.]table 之后的查询部分) 。create_time(DateTime) — 提交 mutation 命令执行的日期和时间。block_numbers.partition_id(Array(String)) — 对于复制表的 mutation,该数组包含各分区的 ID (每个分区一条记录) 。对于非复制表的 mutation,该数组为空。block_numbers.number(Array(Int64)) — 对于复制表的 mutation,该数组对每个分区包含一条记录,其中记录了该 mutation 获取的块号。只有包含块号小于该编号的块的数据分区片段,才会在该分区中执行 mutation。对于非复制表,所有分区中的块号构成一个统一序列。这意味着对于非复制表的 mutation,该列将包含一条记录,其中带有该 mutation 获取的单个块号。parts_in_progress_names(Array(String)) — 当前正在执行 mutation 的数据分区片段名称数组。parts_to_do_names(Array(String)) — 为完成该 mutation 而仍需执行 mutation 的数据分区片段名称数组。parts_to_do(Int64) — 为完成该 mutation 而仍需执行 mutation 的数据分区片段数量。注意:即使parts_to_do= 0,复制表的 mutation 也可能仍未完成,因为可能存在一个长时间运行的 INSERT,正在创建一个之后也需要执行 mutation 的新数据分区片段。parts_postpone_reasons(Map(String, String)) — 从 part 名称到其被延后原因的映射。is_done(UInt8) — 标记该 mutation 是否已完成。可能的值:mutation 已完成时为 1,mutation 仍在进行中时为 0。is_killed(UInt8) — 表示 mutation 是否已被终止。仅在 ClickHouse Cloud 中可用。注意:is_killed=1 并不一定表示该 mutation 已完全结束。mutation 可能会在较长时间内保持 is_killed=1 且 is_done=0 的状态。如果另一个长时间运行的 mutation 阻塞了这个已终止的 mutation,就可能发生这种情况。这是正常现象。latest_failed_part(String) — 最近一个无法执行 mutation 的 part 名称。latest_fail_time(DateTime) — 最近一次 part 执行 mutation 失败的日期和时间。latest_fail_reason(String) — 导致最近一次 part 执行 mutation 失败的异常消息。latest_fail_error_code_name(String) — 导致最近一次 part 执行 mutation 失败的异常错误代码名称。
注意
-
如果某个 part 名称不在
parts_postpone_reasons中,且尚未发生 mutation,则表示该 part 还未被调度执行 mutation。 -
part 名称
all_parts表示所有尚未发生 mutation 的 parts。
is_killed(UInt8) — 表示某个 mutation 是否已被终止。仅在 ClickHouse Cloud 中可用。
注意
is_killed=1 并不一定意味着该 mutation 已完全结束。mutation 可能会长时间处于 is_killed=1 且 is_done=0 的状态。如果有另一个长时间运行的 mutation 阻塞了这个已被终止的 mutation,就可能出现这种情况。这是正常现象。
is_done(UInt8) — 指示mutation是否完成的标志。可能的值:1表示mutation已完成,0表示mutation仍在进行中。
注意
即使 parts_to_do = 0,复制表的mutation也可能尚未完成,因为长时间运行的 INSERT 查询会创建需要mutation的新数据分区片段。
如果在mutation某些数据分区片段时出现问题,以下列包含附加信息:
latest_failed_part(String) — 无法mutation的最新数据分区片段的名称。latest_fail_time(DateTime) — 最近一次数据分区片段mutation失败的日期和时间。latest_fail_reason(String) — 导致最近一次数据分区片段mutation失败的异常消息。
监控 Mutation
要跟踪 system.mutations 表中的进度,请使用以下查询:
注意:这需要对 system.* 表具有读取权限。
Cloud 使用说明
在 ClickHouse Cloud 中,每个节点上的 system.mutations 表都包含集群中的所有 mutation,因此无需使用 clusterAllReplicas。
另请参阅
- Mutation
- MergeTree 表引擎
- ReplicatedMergeTree 系列