Skip to main content
これらの設定は system.merge_tree_settings で確認でき、ClickHouse のソースコードから自動生成されています。

min_absolute_delay_to_close

クローズしてリクエストの処理を停止し、ステータスチェックで OK を返さなくなるまでの最小の絶対遅延。

min_columns_to_activate_adaptive_write_buffer

適応型の書き込みバッファを使用することで、多数のカラムを持つテーブルのメモリ使用量を削減できます。 wide パーツが書き込むストリーム数と比較されます。この数はカラム数を大幅に超える可能性があります。 多数のバケットを持つ Map や、深くネストされた Array または Tuple は、単一のカラムに対して多数のストリームに書き込み、 ストリームごとに1つの書き込みバッファが割り当てられます。 設定可能な値:
  • 0 - 無効
  • 1 - 常に有効

min_compress_block_size

次の マーク の書き込み時に圧縮を行うために必要な、非圧縮データの block の最小サイズです。この設定はグローバル設定でも指定できます (min_compress_block_size 設定を参照) 。テーブルの作成時に指定した値は、この設定のグローバル値を上書きします。

min_index_granularity_bytes

データ granule の最小許容サイズ (バイト単位) 。 index_granularity_bytes が極端に小さいテーブルを誤って作成しないようにするための安全策です。

min_marks_to_honor_max_concurrent_queries

max_concurrent_queries 設定を適用するために、クエリが読み取るマークの最小数です。
クエリは引き続き、他の max_concurrent_queries 設定による制限を受けます。
設定可能な値:
  • 正の整数。
  • 0 — 無効 (max_concurrent_queries の制限はどのクエリにも適用されません) 。
例

min_merge_bytes_to_use_direct_io

ストレージディスクへの direct I/O アクセスを使用するために必要な、マージ操作の最小データ量です。データパーツをマージする際、ClickHouse は マージ対象となるすべてのデータの合計ストレージ容量を計算します。その容量が min_merge_bytes_to_use_direct_io バイトを超えると、ClickHouse は direct I/O インターフェイス (O_DIRECT オプション) を使用して、ストレージディスクに対するデータの読み取りと書き込みを行います。 min_merge_bytes_to_use_direct_io = 0 の場合、direct I/O は無効になります。

min_partition_age_to_force_merge_seconds

パーティション内のすべてのパーツがこの値より古い場合、つまりそのパーティションが すでに insert を受け付けていない場合に、そのパーティション内のパーツを merge します。 min_age_to_force_merge_on_partition_only と併用する min_age_to_force_merge_seconds とは異なり、パーティション全体が単一の merge に 収まる必要はありません。各 merge は引き続き max_bytes_to_merge_at_max_space_in_pool に従います。Simple および StochasticSimple の merge selector で動作します。 ここで比較される経過時間は、パーティション内で最も新しいパーツの経過時間 (now - modification_time をパーツ間で最小化した値)です。したがって、この ルールはすべてのパーツがこの値を超えて古くなって初めて発動します。新しいパーツが 作られるとこの経過時間はリセットされます。insert や mutation はもちろん、この設定自体が 割り当てた各 merge も同様です。merge 後のパーツは新しいパーツだからです。そのため、 強制 merge が実行されるとその時点で強制は解除され、新しいパーツが作られないまま この値が再び経過して初めて再び発動します。複数回の merge を必要とするパーティションは、 1 回の連続した処理ではなく、この interval を空けた複数のラウンドにわたって compact 化されていきます。 強制の動作は min_age_to_force_merge_seconds とまったく同じです。通常であれば 不均衡な merge の割り当てを妨げるサイズ比の要件を免除し、さらに min_parts_to_merge_at_once の下限も免除します。そのため、強制 merge はその下限が 求める数より少ないパーツを対象とすることがあります。それ以外の heuristic は無効化されません。 merge_selector_window_size は引き続き検査対象のパーツを制限し、 merge_selector_enable_heuristic_to_remove_small_parts_at_right も引き続き、 3 つ以上のパーツからなる選択範囲の末尾にある小さなパーツを trim します。 workload の都合でこれらを無効にする必要がある場合は、それぞれの設定で明示的に 無効化してください。 Simple および StochasticSimple の merge selector では、 min_age_to_force_merge_on_partition_only と併用した min_age_to_force_merge_seconds とは組み合わせられません。この組み合わせは パーティション全体を一度に merge し、そのような merge のみが FINAL として マークされます。これにより ReplacingMergeTree で CLEANUP を実行できるようになります。 パーティションの経過時間によって regular merges を強制すると、これを妨げてしまいます。 単一の merge に収まるパーティションにはこの組み合わせを、収まらないパーティションには この設定を使用してください。その他の selector はこの設定を無視するため、それらとの 組み合わせは許容されます。 設定可能な値:
  • 正の整数。

min_parts_to_merge_at_once

merge selector が一度に選択して merge できる データパーツ の最小数 (上級者向けの設定です。何をするものか理解していない場合は変更しないでください) 。 0 - 無効。Simple および StochasticSimple merge selector で機能します。

min_replicated_logs_to_keep

廃止された場合でも、ZooKeeper のログ内の最新レコードをこの件数程度まで保持します。これはテーブルの動作には影響せず、クリーンアップ前の ZooKeeper ログを診断するためにのみ使用されます。 設定可能な値:
  • 任意の正の整数。

min_unreserved_disk_space_for_merge

指定した量 (バイト単位) の予約されていないディスク容量をバックグラウンドマージが使用できないように確保し、 バックグラウンドマージによって挿入処理が妨げられないようにします。この量は空き容量から差し引かれ、 マージのソースパーツの合計サイズの上限は、その残りの容量に安全係数を適用して算出されます。 そのため、許可される最大のマージサイズは残りの容量を十分に下回ります。この上限はディスクの使用量が増えるにつれて小さくなり、 空き容量がこの値まで減少するとゼロになります。その時点で、バックグラウンドマージは一切選択されなくなります。 (0 の場合は無効) keep_free_space_bytes とは異なり、保護された領域は ClickHouse 自身が引き続き使用できます。 除外されるのはマージのスケジューリングの対象からのみです。ミューテーションはこの設定による制限を受けず、 保護された領域を消費する可能性があります。また、この設定は容量無制限のディスク (オブジェクトストレージなど) には影響しません。 FINAL または明示的な PARTITION を指定した OPTIMIZE によって開始されたマージでは、 この設定は無視されます。完全に期限切れとなったパーツを削除するマージは、上限がゼロより大きければサイズに関係なく選択され、 上限がゼロの場合は一切選択されません。すべてのマージは少なくとも 1 MiB を予約するため、 保護領域を除いた残り容量が 1 MiB 未満の状態で開始されたマージは、保護領域から最大 1 MiB を使用する場合があります。 ReplicatedMergeTree のレプリカは、WHERE を伴わない行の有効期限 (TTL) がテーブルで唯一の TTL である場合、 自身の上限がゼロであってもキュー内の削除処理を実行します。GROUP BY、WHERE、またはカラムの TTL がある場合、 このような削除処理では残りの行が書き換えられます。ReplicatedMergeTree はパーツのサイズに応じてこれを延期しますが、 MergeTree は延期しないため、保護領域に書き込む可能性があります。 上限がゼロになると、通常の OPTIMIZE では何も割り当てられません。つまり何も実行されないか、 optimize_throw_if_noop = 1 の場合は CANNOT_ASSIGN_OPTIMIZE の例外がスローされます。 保護領域を使ってマージするには、FINAL または明示的な PARTITION を指定してください。 ReplicatedMergeTree では、この除外がレプリケーションログのエントリに記録されるのは、キューに登録したレプリカ上で この設定が 0 以外の場合に限られます。そのため、設定が 0 のときにキューに登録された OPTIMIZE は、 引き続きヘッドルームの制約を受けて実行されます。 ALTER TABLE ... MODIFY SETTING はレプリケートされないため、すべてのレプリカに同じ値を設定してください。 より大きなヘッドルームが設定されたレプリカは、他のレプリカで割り当てられたマージにもその値を適用し直すため、 マージが無期限に延期される可能性があります。すべてのレプリカがこの設定に対応したバージョンで稼働するまでは、 値を 0 のままにしてください。古いレプリカは除外対象のマージ用に書き込まれたログエントリを解析できず、 通常の挿入処理のエントリも含め、そのテーブルのそれ以降のエントリを取得しなくなります。