メインコンテンツへスキップ
ALTER TABLE [db.]table [ON CLUSTER cluster] APPLY PATCHES [IN PARTITION partition_id]
このコマンドは、論理更新 UPDATE ステートメントによって作成されたパッチパートの物理的なマテリアライズを手動でトリガーします。影響を受けたカラムのみを書き換えることで、保留中のパッチをデータパートに強制的に適用します。
  • MergeTree ファミリーのテーブル (レプリケートされた テーブルを含む) でのみ動作します。
  • これは mutation 操作であり、バックグラウンドで非同期に実行されます。

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

関連項目

最終更新日 2026年6月10日