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

更新ミューテーション

更新ミューテーションとは、更新操作によってテーブルデータを操作する ALTER クエリを指します。代表的なものとしては ALTER TABLE ... UPDATE などのクエリがあります。このようなクエリを実行すると、データパーツの新しいミューテーション済みバージョンが生成されます。これは、そのミューテーションより前に挿入されたすべてのデータについて、パーツ全体の書き換えが発生することを意味し、大量の書き込み要求につながります。

参考文献

更新を行う場合、デフォルトの MergeTree テーブルエンジンの代わりに、ReplacingMergeTreeCollapsingMergeTree などの専用テーブルエンジンを使用することで、このような大量の書き込み要求を回避できます。

ALTER TABLE ... UPDATE 文

ALTER TABLE [db.]table [ON CLUSTER cluster] UPDATE column1 = expr1 [, ...] [IN PARTITION partition_id] WHERE filter_expr

指定されたフィルタリング式に一致するデータを操作します。mutationとして実装されています。

注記

ALTER TABLE という接頭辞により、この構文は SQL をサポートする他のほとんどのシステムとは異なります。これは、OLTP データベースにおける類似のクエリと異なり、この操作が頻繁な使用を想定していない重い処理であることを示すためのものです。

filter_expr は型 UInt8 でなければなりません。このクエリは、filter_expr が 0 以外の値を取る行について、指定されたカラムの値を対応する式の値に更新します。値は CAST 演算子を使用してカラムの型にキャストされます。プライマリキーまたはパーティションキーの計算に使用されるカラムの更新はサポートされていません。

1 つのクエリには、カンマ区切りで複数のコマンドを含めることができます。

クエリ処理の同期方法は、mutations_sync 設定で定義されます。既定では非同期です。

関連項目