ALTER TABLE [db.]table [ON CLUSTER cluster] APPLY PATCHES [IN PARTITION partition_id]
La commande déclenche manuellement la matérialisation physique des patch parts créées par les instructions de Lightweight UPDATE. Elle force l’application des patchs en attente aux parties de données en ne réécrivant que les colonnes concernées.
- Elle fonctionne uniquement pour les tables de la famille
MergeTree (y compris les tables répliquées).
- Il s’agit d’une opération de mutation qui s’exécute de manière asynchrone en arrière-plan.
Quand utiliser APPLY PATCHES
En règle générale, vous ne devriez pas avoir besoin d’utiliser APPLY PATCHES
Les patch parts sont normalement appliquées automatiquement lors des fusions lorsque le paramètre apply_patches_on_merge est activé (par défaut). Cependant, il peut être utile de déclencher manuellement l’application des patchs dans les cas suivants :
- Pour réduire le surcoût lié à l’application des patchs pendant les requêtes
SELECT
- Pour consolider plusieurs patch parts avant qu’elles ne s’accumulent
- Pour préparer les données pour une sauvegarde ou une exportation, avec des patchs déjà matérialisés
- Lorsque
apply_patches_on_merge est désactivé et que vous souhaitez contrôler le moment où les patchs sont appliqués
Appliquez tous les patchs en attente d’une table :
ALTER TABLE my_table APPLY PATCHES;
N’appliquez les patchs qu’à une partition donnée :
ALTER TABLE my_table APPLY PATCHES IN PARTITION '2024-01';
Combinez avec d’autres opérations :
ALTER TABLE my_table APPLY PATCHES, UPDATE column = value WHERE condition;
Suivi de l’application du correctif
Vous pouvez suivre l’avancement de l’application du correctif à l’aide de la table system.mutations :
SELECT * FROM system.mutations
WHERE table = 'my_table' AND command LIKE '%APPLY PATCHES%';