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%';関連項目
- 論理更新
UPDATE- 論理更新によってパッチパートを作成します apply_patches_on_merge設定 - マージ時のパッチの自動適用を制御します