跳转到主内容
跳转到主内容

应用轻量级更新补丁

Beta feature. Learn more.
ALTER TABLE [db.]table [ON CLUSTER cluster] APPLY PATCHES [IN PARTITION partition_id]

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

注意
  • 该命令仅适用于 MergeTree 系列表(包括复制表)。
  • 这是一种数据变更操作,会在后台异步执行。

何时使用 APPLY PATCHES

提示

通常情况下,你不需要使用 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%';

另请参阅