描述
列:
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=1 且 is_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.* 表具有读取权限。
另请参阅
- 变更
- MergeTree 表引擎
- ReplicatedMergeTree 家族