Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

ALTER TABLE ... APPLY PATCHES

Beta 版功能
ALTER TABLE [db.]table [ON CLUSTER cluster] APPLY PATCHES [IN PARTITION partition_id]

该命令会手动触发对由轻量级 UPDATE语句创建的补丁分区片段进行物理物化。它会仅重写受影响的列,强制将待处理的补丁应用到数据分区片段。

何时使用 APPLY PATCHES

启用 apply_patches_on_merge 设置 (默认) 后,补丁分区片段通常会在合并过程中自动应用。不过,在以下场景中,你可能希望手动触发补丁应用:

  • 减少在 SELECT 查询期间应用补丁带来的开销
  • 在多个补丁分区片段积累起来之前先将其合并
  • 为备份或导出准备数据,并提前将补丁物化
  • apply_patches_on_merge 被禁用,而你希望自行控制补丁的应用时机时

示例

将某个表的所有待处理补丁全部应用:

ALTER TABLE my_table APPLY PATCHES;

仅对特定分区应用补丁:

ALTER TABLE my_table APPLY PATCHES IN PARTITION '2024-01';

可与其他操作结合使用:

ALTER TABLE my_table APPLY PATCHES, UPDATE column = value WHERE condition;

监控补丁应用进度

你可以使用 system.mutations 表来监控补丁应用的进度:

SELECT * FROM system.mutations
WHERE table = 'my_table' AND command LIKE '%APPLY PATCHES%';

另请参见

Navigation