これらの設定は system.settings で確認でき、ソースコード から自動生成されています。
merge_tree_coarse_index_granularity
データを検索する際、ClickHouse は索引ファイル内のデータマークを確認します。必要なキーが含まれる範囲が見つかると、ClickHouse はその範囲を merge_tree_coarse_index_granularity 個の部分範囲に分割し、その中を再帰的に検索して必要なキーを探します。
設定可能な値:
- 正の偶数整数。
merge_tree_compact_parts_min_granules_to_multibuffer_read
ClickHouse Cloud でのみ有効です。並列読み取りと prefetch をサポートするマルチバッファリーダーを使用するために必要な、MergeTree テーブルの compact パーツ内のストライプに含まれるグラニュール数を指定します。リモート fs から読み取る場合、マルチバッファリーダーを使用すると読み取りリクエスト数が増加します。パーツに含まれるグラニュール数がこのしきい値未満であり、かつ読み取るカラム数よりも少ない場合、そのパーツは単一バッファで読み取られます。これは、その場合は単一バッファリーダーのほうがマルチバッファリーダーより少ない読み取りリクエストで済むためです。
merge_tree_determine_task_size_by_prewhere_columns
読み取りタスクサイズの決定に、prewhereカラムのサイズのみを使用するかどうか。
merge_tree_generic_exclusion_search_max_steps
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 26.7 | 0 | 主キー索引に対する汎用排除検索のステップ数を制限するための新しい設定。 |
フィルタを主キーの単一の連続した範囲として評価できない場合、たとえば先頭以外のキーカラムを使用している場合、ClickHouse は索引マークに対して反復的な汎用排除検索アルゴリズムを実行します。同じアルゴリズムは、テキスト索引の解析にも使用されます。この設定は、アルゴリズムが各データパートに費やすステップ数 (索引のチェック回数) を制限します。
この予算は、残っている中で最も大きいマーク範囲から優先的に消費されます。予算を使い切ると、完全に解析されなかった範囲はひとかたまりとして受け入れられるため、クエリの正しさは保たれますが、無制限の検索で選択される場合よりも多くのグラニュールを読み取ることがあります。予算を小さくすると、読み取るデータ量が増える代わりに索引解析は高速になります。この制限は解析コストの厳密な上限ではなく、検索はおおよそ 1 回の分割ラウンド分だけ超過することがあります。また、パートがすでに多数の範囲に分割されている場合 (たとえば query condition cache による場合) 、制限に関係なく各範囲は少なくとも 1 回チェックされます。
検索が各データパートで実行したステップ数は、クエリの trace レベルのログメッセージに記録されます。また、IndexGenericExclusionSearchStepLimitReached および TextIndexGenericExclusionSearchStepLimitReached profile events は、予算を使い切った回数をカウントします。
(既定の) 値 0 は、ステップ数が無制限であることを意味します。
設定可能な値:
- ステップ数を無制限にする 0、または任意の正の整数。
merge_tree_max_bytes_to_use_cache
1つのクエリで ClickHouse が merge_tree_max_bytes_to_use_cache バイトを超えるデータを読み取る必要がある場合、非圧縮ブロックのキャッシュは使用されません。
非圧縮ブロックのキャッシュには、クエリ用に抽出されたデータが保存されます。ClickHouse はこのキャッシュを使用して、繰り返し実行される小規模なクエリへの応答を高速化します。この設定は、大量のデータを読み取るクエリによってキャッシュが使い尽くされるのを防ぎます。uncompressed_cache_size サーバー設定で、非圧縮ブロックのキャッシュのサイズを定義します。
設定可能な値:
- 任意の正の整数。
merge_tree_max_rows_to_use_cache
ClickHouse が 1 回のクエリで merge_tree_max_rows_to_use_cache 行を超えて読み取る必要がある場合、非圧縮ブロックのキャッシュは使用されません。
非圧縮ブロックのキャッシュには、クエリ用に抽出されたデータが保存されます。ClickHouse はこのキャッシュを使用して、繰り返し実行される小規模なクエリへの応答を高速化します。この設定は、大量のデータを読み取るクエリによってキャッシュが無駄に消費されるのを防ぎます。uncompressed_cache_size サーバー設定で、非圧縮ブロックのキャッシュのサイズを定義します。
設定可能な値:
- 任意の正の整数。
merge_tree_min_bytes_for_concurrent_read
MergeTreeエンジンのテーブルにおいて、1つのファイルから読み取るバイト数が merge_tree_min_bytes_for_concurrent_read を超える場合、ClickHouse はこのファイルを複数のスレッドで同時に読み取ろうとします。
設定可能な値:
- 正の整数。
merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 24.10 | 0 | 設定は非推奨 |
リモートファイルシステムから読み取る際に、MergeTreeエンジンが並列読み取りを開始するまでに、1つのファイルから読み取る最小バイト数です。この設定の使用は推奨されません。
設定可能な値:
- 正の整数。
merge_tree_min_bytes_for_seek
1 つのファイル内で読み取る 2 つのデータブロック間の距離が merge_tree_min_bytes_for_seek バイト未満の場合、ClickHouse は追加の シーク を避けるため、両方のブロックを含むファイル範囲を順次読み取ります。
設定可能な値:
- 任意の正の整数。
merge_tree_min_bytes_per_read_stream
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 26.8 | 65536 | sqrt コストモデルを用いて、通常のローカル非順序 `MergeTree` における狭いカラムのスキャン時のストリーム数に上限を設ける新しい設定。コア数の多いマシンでストリームごとのオーバーヘッドを削減します。previous_value=0(無効)のため、26.8 より前のバージョンとの `compatibility` により、従来のストリーム数が復元されます。 |
バイト換算で表したストリームごとのオーバーヘッドコストです。通常のローカル非順序 MergeTree スキャンで作成される読み取りストリームの最大数を制御します。順序付き読み取り、FINAL、レイヤー化された読み取り、および並列レプリカ読み取りには影響しません。ボリュームベースの上限は ceil(sqrt(estimated_read_bytes / this_setting)) です。ClickHouse では、少なくとも 16 ストリーム、およびこの上限を適用する前に要求されたストリーム数の少なくとも 4 分の 1 が維持されるため、実効ストリーム数は min(requested_streams, max(volume_based_cap, 16, floor(requested_streams / 4))) となります。これらの下限により、コストが estimated_read_bytes には反映されない、CPU 負荷の高い式や集計において下流の並列度が維持されます。
estimated_read_bytes は、索引およびパーティションプルーニング後に残ったマーク範囲で読み取られるカラムの非圧縮サイズです。ストリームごとのオーバーヘッドは、圧縮率ではなく処理される値の数に比例するストリームごとの作業量とのトレードオフになるため、非圧縮サイズが使用されます。
読み取りボリュームを保守的に見積もれない場合、この上限は適用されません。たとえば、古いパートで新しく追加された DEFAULT カラムを評価するために他の物理カラムを読む必要がある場合や、選択された範囲で可変幅カラムの一部のみを読み取る場合です。
デフォルトの 64 KB は、T(N) = W/N + F + V·N というコストモデルから導出されています。ここで、W は有効な作業量、F は固定のパイプラインオーバーヘッド、V はストリームごとの可変コストです。最適なストリーム数は sqrt(W/V) です。スループットを介して W をバイトで表すと、C = throughput · V ≈ 400 MB/s · 0.17 ms ≈ 64 KB となります。この値を大きくするとストリーム数は減少し (より保守的になり) 、小さくするとより多くのストリームが許可されます。この最適化を無効にするには 0 に設定します。
設定可能な値:
- 非負の整数。
merge_tree_min_bytes_per_task_for_remote_reading
別名: filesystem_prefetch_min_bytes_for_single_read_task
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 24.8 | 2097152 | 値は `filesystem_prefetch_min_bytes_for_single_read_task` に統一されました |
タスクごとに読み取る最小バイト数。
merge_tree_min_read_task_size
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 24.10 | 8 | 新しい設定 |
タスクサイズの厳格な下限値 (グラニュール の数が少なく、利用可能なスレッド数が多い場合でも、これより小さいタスクは割り当てられません
merge_tree_min_rows_for_concurrent_read
MergeTree テーブルのファイルから読み取る行数が merge_tree_min_rows_for_concurrent_read を超えると、ClickHouse はこのファイルを複数のスレッドで同時に読み取ろうとします。
設定可能な値:
- 正の整数。
merge_tree_min_rows_for_concurrent_read_for_remote_filesystem
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 24.10 | 0 | 設定は非推奨 |
リモートファイルシステムからの読み取り時に、MergeTreeエンジンが読み取りを並列化できるようになるまでに、1つのファイルから読み取る最小行数です。この設定の使用は推奨されません。
設定可能な値:
- 正の整数。
merge_tree_min_rows_for_seek
1 つのファイル内で読み取る 2 つのデータブロック間の距離が merge_tree_min_rows_for_seek 行未満の場合、ClickHouse はファイル内でシークを行わず、データを順次読み取ります。
設定可能な値:
- 任意の正の整数。
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 26.8 | 1 | Wide パーツで索引マークへのシークにより読み取られる JSON 共有データサブストリームのプリフェッチを制御する新しい設定。 |
索引マークへのシークにより読み取られる Wide パーツ内の JSON 共有データサブストリームのプリフェッチを有効にします。このようなプリフェッチはグラニュールの先頭から読み取りますが、通常そこはサブストリームの読み取り位置ではないため、無駄になる場合があります。これらのプリフェッチをスキップするには、無効にします。
merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_injection_probability
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 24.3 | 0 | `PartsSplitter` のテスト用。指定した確率で、MergeTree から読み取るたびに読み取り範囲を交差する範囲と交差しない範囲に分割します。 |
PartsSplitter のテスト用。指定した確率で、MergeTree から読み取るたびに読み取り範囲を交差する範囲と交差しない範囲に分割します。
merge_tree_storage_snapshot_sleep_ms
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 25.6 | 0 | クエリ内のストレージスナップショットの整合性をデバッグするための新しい設定 |
MergeTree テーブルのストレージスナップショット作成時に、人為的な遅延 (ミリ秒単位) を挿入します。 テストおよびデバッグ専用です。
設定可能な値:
- 0 - 遅延なし (デフォルト)
- N - ミリ秒単位の遅延
merge_tree_use_const_size_tasks_for_remote_reading
リモートテーブルから読み取る際に、一定サイズのタスクを使用するかどうか。
merge_tree_use_deserialization_prefixes_cache
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 25.2 | 1 | MergeTree におけるデシリアライゼーションプレフィックスキャッシュの使用を制御する新しい設定 |
MergeTree でリモートディスクから読み取る際に、ファイルのプレフィックス内のカラムメタデータをキャッシュする機能を有効にします。
merge_tree_use_prefixes_deserialization_thread_pool
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 25.2 | 1 | MergeTree におけるプレフィックスの並列デシリアライゼーション用スレッドプールの使用を制御する新しい設定 |
MergeTree の wide パーツでプレフィックスを並列に読み取る際に、スレッドプールを使用するようにします。このスレッドプールのサイズは、サーバー設定 max_prefixes_deserialization_thread_pool_size で制御されます。
merge_tree_use_v1_object_and_dynamic_serialization
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 24.11 | 0 | JSON および Dynamic 型向けの新しいシリアル化バージョン V2 を追加 |
有効にすると、MergeTree では V2 の代わりに JSON 型および Dynamic 型のシリアル化バージョン V1 が使用されます。この設定の変更は、サーバーの再起動後にのみ反映されます。