You need to enable JavaScript to run this app.
导航
system.mutations
最近更新时间:2025.10.31 15:37:27首次发布时间:2025.10.31 15:37:27
复制全文
我的收藏
有用
有用
无用
无用

系统表 system.mutations 用于存储正在进行的数据变更操作(如 UPDATE、DELETE、ALTER)的信息。

注意事项
  • ByteHouse 引擎版本低于 v2.3.2.0 时,仅支持返回响应请求的 server 的 mutations 进度结果。
  • ByteHouse 引擎版本为 v2.3.2.0 及以上时,支持返回所有 server 的 mutations 进度结果。
  • 您可以在 ByteHouse 控制台的租户管理 > 基本信息页面查看您当前的引擎版本。

列名

字段名称

数据类型

字段含义说明

database

String

变更操作所属的数据库名称。

table

String

变更操作对应的表名称。

mutation_id

String

变更的 ID。

  • 对于复制表,mutation_id 对应 ByteHouse Keeper 中<table_path>/mutations/目录中的 znode 名称。
  • 对于非复制表,mutation_id 对应表的数据目录中的文件名。

query_id

UUID

触发变更操作的查询 UUID。

command

String

具体的变更命令内容(ALTER TABLE [db.]table后的核心语句)。

create_time

DateTime

变更命令提交执行的日期和时间。

cnch

UInt8

是否为 Cnch 引擎表的变更标识。

  • 1 = 是(Cnch 引擎表);
  • 0 = 否(其他引擎表)。

block_numbers.partition_id

Array(String)

对于复制表,数组包含分区的 ID(每个分区一个记录)。对于非复制表,该值为空。

block_numbers.number

Arrart(Int64)

对于复制表,数组为每个分区包含一个记录,记录显示变更获得的区块编号。只有包含小于该编号的区块的部分将会在该分区内被变更。
在非复制表中,所有分区的区块编号形成一个单一序列。这意味着对于非复制表的变更,该列将包含一个记录,其中记录为变更获得的单个区块编号。

parts_to_do_names

Array(String)

待处理的分片名称数组(尚未完成变更的分片)

parts_to_do

Int64

待处理的分片总数,用于计算进度。

is_done

UInt8

变更操作的完成状态:

  • 1 = 变更已完成;
  • 0 = 变更仍在进行中。

latest_failed_part

String

最近无法变更的分片名称。

latest_fail_time

DateTime

最近的部分变更失败的日期和时间。

latest_fail_reason

String

导致最近部分变更失败的异常消息。

settings

String

执行变更操作时使用的会话设置。

示例

查询指定表的变更情况:

SELECT 
  database,
  table,
  mutation_id,
  create_time,
  command
FROM system.mutations 
WHERE database = 'sales_db' 
  AND table = 'order_details_test'
ORDER BY create_time DESC;

查询结果示例:
Image