ALTER TABLE [db.]table [ON CLUSTER cluster] APPLY PATCHES [IN PARTITION partition_id]
O comando aciona manualmente a materialização física das partes de patch criadas por instruções de UPDATE lightweight. Ele força a aplicação dos patches pendentes às partes de dados, reescrevendo apenas as colunas afetadas.
- Funciona apenas para tabelas da família
MergeTree (incluindo tabelas replicadas).
- Esta é uma operação de mutação e é executada de forma assíncrona em segundo plano.
Quando usar APPLY PATCHES
Em geral, você não deve precisar usar APPLY PATCHES
As partes de patch normalmente são aplicadas automaticamente durante os merges quando a configuração apply_patches_on_merge está habilitada (padrão). No entanto, talvez você queira acionar manualmente a aplicação de patches nestes cenários:
- Para reduzir a sobrecarga de aplicar patches durante consultas
SELECT
- Para consolidar várias partes de patch antes que se acumulem
- Para preparar os dados para backup ou exportação com os patches já materializados
- Quando
apply_patches_on_merge está desabilitada e você quer controlar quando os patches são aplicados
Aplique todos os patches pendentes em uma tabela:
ALTER TABLE my_table APPLY PATCHES;
Aplique patches somente a uma partição específica:
ALTER TABLE my_table APPLY PATCHES IN PARTITION '2024-01';
Combine-o com outras operações:
ALTER TABLE my_table APPLY PATCHES, UPDATE column = value WHERE condition;
Monitoramento da aplicação de patch
Você pode monitorar o andamento da aplicação de patch usando a tabela system.mutations:
SELECT * FROM system.mutations
WHERE table = 'my_table' AND command LIKE '%APPLY PATCHES%';