Skip to main content

描述

该表包含 MergeTree 表的变更及其进度信息。每个变更命令对应一行。

列:

  • database (String) — 应用了变更操作的数据库名称。
  • table (String) — 应用了变更操作的表名称。
  • mutation_id (String) — 变更的 ID。对于复制表,这些 ID 对应于 ClickHouse Keeper 中 <table_path_in_clickhouse_keeper>/mutations/ 目录内的 znode 名称。对于非复制表,这些 ID 对应于表数据目录中的文件名。
  • command (String) — 变更命令字符串 (查询中 ALTER TABLE [db.]table 之后的部分) 。
  • create_time (DateTime) — 提交变更命令以执行的日期和时间。
  • block_numbers.partition_id (Array(String)) — 对于复制表的变更,该数组包含各分区的 ID (每个分区一条记录) 。对于非复制表的变更,该数组为空。
  • block_numbers.number (Array(Int64)) — 对于复制表的变更,该数组每个分区包含一条记录,其中记录了该变更获取的块编号。该分区中仅包含编号小于此编号的块的数据分区片段会被变更。对于非复制表,所有分区中的块编号构成一个单一序列。这意味着,对于非复制表的变更,该列将包含一条记录,其中包含该变更获取的单个块编号。
  • parts_in_progress_names (Array(String)) — 当前正在变更的数据分区片段名称数组。
  • parts_to_do_names (Array(String)) — 完成该变更所需变更的数据分区片段名称数组。
  • parts_to_do (Int64) — 完成该变更所需变更的数据分区片段数量。注意:即使 parts_to_do = 0,复制表的变更也可能尚未完成,因为某个长时间运行的 INSERT 正在创建需要变更的新数据分区片段。
  • parts_postpone_reasons (Map(String, String)) — 分片名称及其被推迟原因的映射。
  • is_done (UInt8) — 表示变更是否已完成的标志。可能的值:变更已完成时为 1,变更仍在进行时为 0。
  • is_killed (UInt8) — 指示变更是否已被终止。仅在 ClickHouse Cloud 中可用。注意:is_killed=1 并不一定表示变更已完全结束。变更可能会在 is_killed=1 且 is_done=0 的状态下持续较长时间。如果另一个长时间运行的变更阻塞了被终止的变更,便可能发生这种情况。这是正常现象。
  • latest_failed_part (String) — 最近一次无法变更的数据分区片段名称。
  • latest_fail_time (DateTime) — 最近一次 part mutation 失败的日期和时间。
  • latest_fail_reason (String) — 导致最近一次 part mutation 失败的异常消息。
  • latest_fail_error_code_name (String) — 导致最近一次 part mutation 失败的异常错误代码。
  • 如果某个 parts 名称不在 parts_postpone_reasons 中且尚未发生变更,则表示该 part 尚未安排变更。
  • parts 名称 all_parts 表示所有尚未发生变更的 parts。
  • is_killed (UInt8) — 表示变更是否已被终止。仅在 ClickHouse Cloud 中可用。
is_killed=1 并不一定表示该变更已完全结束。变更可能长时间处于 is_killed=1is_done=0 的状态。如果有其他长时间运行的变更阻塞了已终止的变更,就可能出现这种情况。这是正常现象。
  • is_done (UInt8) — 指示变更是否完成的标志。可能的值:
    • 如果变更已完成,则为 1
    • 如果变更仍在进行中,则为 0
即使 parts_to_do = 0,复制表的变更也可能尚未完成,因为有一个长时间运行的 INSERT 查询会创建一个还需要执行变更的新数据分区片段。
如果某些数据分区片段在变更过程中出现问题,以下列会包含附加信息:
  • latest_failed_part (String) — 最近一个无法完成变更的分片的名称。
  • latest_fail_time (DateTime) — 最近一次 part mutation 失败的日期和时间。
  • latest_fail_reason (String) — 导致最近一次 part mutation 失败的异常消息。

监控变更

要跟踪 system.mutations 表中的变更进度,请使用以下查询:
注意:这需要对 system.* 表具有读取权限。
Cloud 使用说明在 ClickHouse Cloud 中,每个节点上的 system.mutations 表都包含集群中的所有变更,因此无需使用 clusterAllReplicas

另请参阅

最后修改于 2026年8月14日