首页/数据/NoSQL 速查/mutation 异步变更与状态跟踪
ClickHouse56 条

mutation 异步变更与状态跟踪

ALTER DELETE/UPDATE 以 mutation 形式在后台按 part 重写数据:提交后立即返回,执行进度与失败原因在 system.mutations 查看,失败任务需要手动清理。

NoSQL 速查数据更新于 2026-10-12
语句ALTER TABLE t UPDATE col = expr WHERE cond;ALTER TABLE t DELETE WHERE cond
状态表system.mutations 的 is_done、parts_to_do、latest_fail_reason
运维语句KILL MUTATION WHERE …;SYSTEM STOP MERGES 暂停合并影响进度

示例

示例
ALTER TABLE events UPDATE level = 0 WHERE level < 0;

SELECT command, is_done, parts_to_do, latest_fail_reason
FROM system.mutations
WHERE table = 'events' AND NOT is_done;

-- 清理失败任务
-- KILL MUTATION WHERE database = 'analytics' AND table = 'events';
mutation 是重写操作,高频 UPDATE/DELETE 与 ClickHouse 的定位相悖;适合场景是修正少量脏数据与批量删除历史。

易错点

  • 同表大量 mutation 排队会阻塞后续任务并放大 IO,批量修正尽量合并成一条语句
  • latest_fail_reason 非空表示任务失败并卡住队列,处理完原因后要 KILL 再重试

数据来源与参考

  • ClickHouse Docs: ALTER DELETE / UPDATE
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌