メインコンテンツへスキップ
メインコンテンツへスキップ

論理更新から生成されたパッチを適用する

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

このコマンドは、軽量な UPDATE 文によって作成されたパッチパーツの物理マテリアライズを手動でトリガーします。影響を受けたカラムのみを書き換えることで、保留中のパッチをデータパーツに強制的に適用します。

注記
  • MergeTree ファミリー(replicated テーブルを含む)のテーブルに対してのみ動作します。
  • これはミューテーション操作であり、バックグラウンドで非同期に実行されます。

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

関連項目