パーツのマージ
ClickHouseにおけるパートマージとは何ですか?
ClickHouse は高速 で、クエリだけでなく挿入も高速です。これは、ストレージ層 のおかげで、LSMツリー に似た方法で運用されます:
① MergeTreeエンジン ファミリーのテーブルに対する挿入は、ソートされた不変の データパート を作成します。
② すべてのデータ処理は、バックグラウンドパートマージ にオフロードされます。
これにより、データの書き込みが軽量であり、非常に効率的 になります。
テーブルごとのパートの数を制御し、上記の②を実装するために、ClickHouseはバックグラウンドで小さいパートを大きなパートに連続してマージします(パーティションごとに)。これを、圧縮サイズが約 ~150 GB に達するまで行います。
次の図はこのバックグラウンドマージプロセスを概説しています:

パートの merge level
は、各追加マージとともに1ずつ増加します。レベルが 0
の場合、そのパートは新しく、まだマージされていないことを意味します。大きなパートにマージされたパートは 非アクティブ としてマークされ、最終的に 構成可能な 時間(デフォルトで8分)経過後に削除されます。時間が経つにつれて、マージされたパートの ツリー が作成されます。これが マージツリー テーブルの名前の由来です。
マージの監視
テーブルパートとは何か の例では、ClickHouse が parts システムテーブルでテーブルパートをすべて追跡していることを 示しました。次のクエリを使用して、例のテーブルのアクティブなパートごとのマージレベルと保存された行数を取得しました: