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%';