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 のままにしてください。古いレプリカは除外対象のマージ用に書き込まれたログエントリを解析できず、
通常の挿入処理のエントリも含め、そのテーブルのそれ以降のエントリを取得しなくなります。