メインコンテンツまでスキップ
メインコンテンツまでスキップ

パーツのマージ

ClickHouseにおけるパートマージとは何ですか?


ClickHouse は高速 で、クエリだけでなく挿入も高速です。これは、ストレージ層 のおかげで、LSMツリー に似た方法で運用されます:

MergeTreeエンジン ファミリーのテーブルに対する挿入は、ソートされた不変の データパート を作成します。

② すべてのデータ処理は、バックグラウンドパートマージ にオフロードされます。

これにより、データの書き込みが軽量であり、非常に効率的 になります。

テーブルごとのパートの数を制御し、上記の②を実装するために、ClickHouseはバックグラウンドで小さいパートを大きなパートに連続してマージします(パーティションごとに)。これを、圧縮サイズが約 ~150 GB に達するまで行います。

次の図はこのバックグラウンドマージプロセスを概説しています:


パートの merge level は、各追加マージとともに1ずつ増加します。レベルが 0 の場合、そのパートは新しく、まだマージされていないことを意味します。大きなパートにマージされたパートは 非アクティブ としてマークされ、最終的に 構成可能な 時間(デフォルトで8分)経過後に削除されます。時間が経つにつれて、マージされたパートの ツリー が作成されます。これが マージツリー テーブルの名前の由来です。

マージの監視

テーブルパートとは何か の例では、ClickHouse が parts システムテーブルでテーブルパートをすべて追跡していることを 示しました。次のクエリを使用して、例のテーブルのアクティブなパートごとのマージレベルと保存された行数を取得しました: