mutations
该表包含关于 mutations 的 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_to_do_names
(Array(String)) — 需要进行 mutation 才能完成 mutation 的数据部件名称数组。 -
parts_to_do
(Int64) — 需要进行 mutation 才能完成 mutation 的数据部件数量。 -
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
,由于长时间运行的 INSERT
查询将创建一个需要进行 mutation 的新数据部件,复制表的 mutation 也可能尚未完成。
如果 mutation 某些数据部件时出现问题,以下列包含其他信息
-
latest_failed_part
(String) — 无法进行 mutation 的最新部件的名称。 -
latest_fail_time
(DateTime) — 最近一次部件 mutation 失败的日期和时间。 -
latest_fail_reason
(String) — 导致最近一次部件 mutation 失败的异常消息。
监控 Mutations
要跟踪 system.mutations 表的进度,请使用如下查询 - 这需要在 system.* 表上具有读取权限
SELECT * FROM clusterAllReplicas('cluster_name', 'db', system.mutations)
WHERE is_done=0 AND table='tmp';
将 table='tmp'
中的 tmp
替换为您正在检查 mutation 的表的名称。
参见