enable_adaptive_aggregator
アダプティブGROUP BY アルゴリズムを有効にします。各スレッドは、ローカルハッシュテーブルが adaptive_aggregator_freeze_threshold 個のキー (または adaptive_aggregator_freeze_threshold_bytes のメモリ) に達するまで集約を行い、その後テーブルは固定されます。すでに出現した頻出キーの行はそのテーブル内で更新され続ける一方、新しいまれなキーはハッシュに基づいてバケットごとのバックログに振り分けられ、バケット並列マージ内で正確に1回だけ集約されます。頻出キーはキャッシュに収まる小さなテーブルに保持され、まれなキーはスレッドごとではなく1回だけ保存・処理されます。
外部集約の設定 (max_bytes_before_external_group_by、max_bytes_ratio_before_external_group_by) も考慮されます。しきい値を超えると、バックログは早期に共有テーブルへ排出されます。それでも使用量をしきい値未満に戻せない場合は、通常の外部集約により共有テーブルがディスクにスピルされます。
enable_adaptive_memory_spill_scheduler
トリガープロセッサが、データを外部ストレージへアダプティブにスピルします。現時点でサポートされているのは、スピル可能なハッシュ結合、すなわちgrace_hash とアダプティブな hash / parallel_hash の経路です。
enable_add_distinct_to_in_subqueries
IN サブクエリで DISTINCT を有効にします。これはトレードオフのある設定です。有効にすると、一意の値だけが送信されるようになるため、分散 IN サブクエリで転送される一時テーブルのサイズを大幅に削減でき、分片間のデータ転送を大きく高速化できます。
ただし、この設定を有効にすると、重複排除 (DISTINCT) を実行する必要があるため、各ノードで追加のマージ処理負荷が発生します。ネットワーク転送がボトルネックになっており、追加のマージコストを許容できる場合にこの設定を使用してください。
enable_alp_codec
ALP 圧縮コーデックを有効にします。
enable_automatic_decision_for_merging_across_partitions_for_final
有効にすると、パーティションキー式が決定論的であり、かつその式で使用されるすべてのカラムが主キーに含まれている場合、ClickHouse はこの最適化を自動的に有効にします。 この自動判定により、同じ主キー値を持つ行は常に同じパーティションに属することが保証されるため、パーティションをまたぐマージを回避しても安全です。 浮動小数点のキーカラムはこの自動判定から除外されます。FINAL の比較器は、Float32、Float64、BFloat16 において値の同一性よりも粗く、-0.0 は 0.0 と等しいと判定され、あらゆる NaN のビットパターンは互いに等しいと判定されます。パーティション式はまさにそれらの値を区別できるため、比較器が同一のキーとして扱う行が異なるパーティションに配置される可能性があり、パーティションをまたぐマージを省略するとそれらがすべて返されてしまいます。
この除外は、Tuple(Float64, UInt8) や Array(Float64) のように浮動小数点がキーカラム内にネストされている場合にも適用されます。
enable_cascades_optimizer
分散クエリプランに対して、Cascades のコストベースオプティマイザを有効にします。make_distributed_plan = 1 と併用した場合にのみ有効になります。この設定だけでは、単一ノードのクエリプランニングは変更されません。
enable_early_constant_folding
関数やサブクエリの結果を解析し、定数が含まれている場合にクエリを書き換えるクエリ最適化を有効にしますenable_extended_results_for_datetime_functions
拡張範囲を持つDate32 型 (Date 型と比較) または拡張範囲を持つ DateTime64 型 (DateTime 型と比較) の結果を返すかどうかを有効または無効にします。
設定可能な値:
0— 関数は、すべての型の引数に対してDateまたはDateTimeを返します。1— 関数は、Date32またはDateTime64型の引数に対してはDate32またはDateTime64を返し、それ以外の場合はDateまたはDateTimeを返します。
enable_full_text_index
別名:allow_experimental_full_text_index
true に設定すると、テキスト索引を使用できます。
enable_function_early_short_circuit
クエリ分析時に、and および or の早期短絡定数畳み込みを有効にします。
有効にすると、対象となる到達不能なスカラーサブクエリの分岐は、型を維持しクエリの意味を検証するために分析されますが、実行されません。スカラーのカーディナリティまたは実行時の値が必要な場合、この最適化は通常の分析にフォールバックします。
enable_funnel_functions
別名:allow_experimental_funnel_functions
ファネル分析用の関数を有効にします。
enable_global_with_statement
WITH ステートメントを UNION クエリおよびすべてのサブクエリに伝播しますenable_group_by_top_k_optimization
GROUP BY keys ORDER BY <prefix of keys> LIMIT K クエリ、および ORDER BY を使用しない GROUP BY keys LIMIT K クエリで、集約中の TopK フィルタリング最適化を有効にします (後者では任意の K 個のグループが有効な結果となるため、すべてのキーを対象としたソートが生成されます) 。
有効にすると、アグリゲーターはこれまでに検出した上位 K 個のキーを保持するサイズ制限付きヒープを維持し、グループ化キーが最終結果に含まれない場合、新しい行をハッシュテーブルに挿入しません。これにより、後続の ORDER BY ... LIMIT で破棄される行を集約せずに済みます。また、ヒープが完全な GROUP BY キーをランク付けする場合は、追い出されたグループも中間ハッシュテーブルからプルーニングされるため、ハッシュテーブルのサイズは異なるキーの数ではなく LIMIT によって制限されます。ORDER BY が GROUP BY キーの適切なプレフィックスのみを対象とする場合、ランク付けでは完全なグループを特定できないため、行のスキップのみが適用されます。この場合、ハッシュテーブルは受け入れられたすべてのグループを保持するため、残りのキーカラムのカーディナリティに応じて増加する可能性があります。
要求された LIMIT が query_plan_max_limit_for_top_k_optimization またはハード上限の 100000 を超える場合、ヒープのメモリおよび CPU コストが要求された LIMIT に応じて増加するため、この最適化は無効になります。
WITH TOTALS、HAVING、QUALIFY、ウィンドウ関数、ROLLUP/CUBE/GROUPING SETS、LIMIT WITH TIES、一致する GROUP BY キーのいずれかに対する COLLATE (完全なキープレフィックスより後の ORDER BY カラムに対する COLLATE は、どのグループが対象となるかに影響しないため、最適化を無効にしません) 、集約に対する ORDER BY、GROUP BY キーの先頭プレフィックス以外に対する ORDER BY、および max_rows_to_group_by または exact_rows_before_limit が設定されている場合など、グループのプルーニングによって結果が変わる可能性のあるクエリ形状では、この最適化はスキップされます。
設定可能な値:
- 0 — 無効。
- 1 — 有効。
enable_hash_join_row_store
ハッシュ結合のペイロードを行優先レイアウトに変換できるようにします。enable_hdfs_pread
HDFS ファイルでのpread の使用を有効または無効にします。デフォルトでは hdfsPread が使用されます。無効にすると、HDFS ファイルの読み取りには hdfsRead と hdfsSeek が使用されます。
enable_http_compression
HTTPリクエストに対するレスポンスでのデータ圧縮を有効または無効にします。 詳細については、HTTPインターフェイスの説明を参照してください。 設定可能な値:- 0 — 無効。
- 1 — 有効。
enable_identifier_resolve_cache
クエリ アナライザで識別子解決 cache を有効にします。この cache は、同じエイリアスが複数回参照されたときに AST が肥大化するのを防ぐため、解決済みのエイリアスノードを共有します。誤った結果が疑われる場合は、false に設定して cache を無効にします。enable_job_stack_trace
ジョブの実行結果が例外になった場合に、ジョブ作成元のスタックトレースを出力します。パフォーマンスのオーバーヘッドを避けるため、デフォルトでは無効です。enable_json_ast_dialect
dialect設定のclickhouse_json値を有効にします。
dialectがclickhouse_jsonに設定されている場合、クエリはSQLテキストではなくJSON AST
(parseQueryToJSONの出力) として解釈されます。ダイアレクトを元に戻せるよう、SETクエリは引き続き
通常のSQLとして解析されます。
例:
enable_json_lazy_type_hints
別名:allow_experimental_json_lazy_type_hints
JSON 型の Lazy 型ヒントを有効にします。
この設定を有効にすると、型ヒントの追加または変更のみを行う ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName) は
メタデータのみの操作になります。既存のパーツでは型ヒントがクエリ時に適用され、
履歴データを書き換える代わりに、データ挿入時およびバックグラウンドマージ時にマテリアライズされます。
enable_lazy_columns_replication
JOIN、ARRAY JOIN、および高階関数 (例: arrayMap) のラムダキャプチャでのカラムの遅延複製を有効にします。これにより、同じ行をメモリ上で何度も不必要にコピーするのを防げます。
enable_materialized_cte
マテリアライズド共通テーブル式 (WITH <name> AS MATERIALIZED (<subquery>)) を有効にします。
有効な場合、MATERIALIZED として宣言され、2 回以上参照される CTE は一度だけ実行されて一時テーブルに格納され、すべての参照はそのテーブルから読み取られます。1 回しか参照されない CTE は、オーバーヘッドを避けるために通常の CTE としてインライン展開されます。
無効な場合、MATERIALIZED キーワードは無視され、CTE は通常の CTE と同様に各参照箇所でインライン展開され、警告がログに記録されます。
enable_materialized_postgresql_table
別名:allow_experimental_materialized_postgresql_table
MaterializedPostgreSQL テーブルエンジンの使用を許可します。
enable_memory_bound_merging_of_aggregation_results
集約に対するメモリ制約付きのマージ戦略を有効にします。enable_multiple_prewhere_read_steps
AND で結合された複数の条件がある場合、より多くの条件を WHERE から PREWHERE に移し、ディスクからの読み取りとフィルタリングを複数段階で実行しますenable_named_columns_in_function_tuple
すべての名前が一意で、クォートなしの識別子として扱える場合、tuple() 関数で名前付きタプルを生成します。enable_nullable_tuple_type
別名:allow_experimental_nullable_tuple_type
テーブルで Nullable Tuple カラムを作成できるようにします。
この設定は、抽出された tuple のサブカラム (Dynamic、Variant、JSON、Tuple カラムから抽出されたものなど) を Nullable にできるかどうかは制御しません。
抽出された tuple のサブカラムを Nullable にできるかどうかは、allow_nullable_tuple_in_extracted_subcolumns で制御してください。
enable_order_by_all
ORDER BY ALL 構文でのソートを有効または無効にします。詳しくは ORDER BY を参照してください。
設定可能な値:
- 0 — ORDER BY ALL を無効にします。
- 1 — ORDER BY ALL を有効にします。
enable_packed_string_keys_in_aggregation
単一の非NullableStringキーに対するGROUP BYでは、16バイトにパックされた文字列参照 (PackedStringRef) をキーとするハッシュテーブルを使用します。最大11バイトのキーはパックされた参照内にインラインで格納され、より長いキーはアリーナで参照されます。
これはほとんどのワークロードで高速ですが、11バイトを超える異なるキーがごく少数のGROUP BYでは、従来方式より遅くなることがあります。特に12..24バイトの場合に顕著です。従来のハッシュテーブルはキーをセル内にインラインで保持する一方、パック方式ではプローブのたびにアリーナポインターを間接参照するためです。
無効にすると、従来のStringHashTableベースの方式 (26.8より前のデフォルト) が使用されます。
分散クエリに参加するすべてのサーバーで、この値が一致している必要があります。distributed_aggregation_memory_efficientでは、二段階バケット番号がキーのハッシュに依存し、そのハッシュは2つの方式で異なるため、この設定が一致しないサーバーでは同じキーが異なるバケットに分割され、不正にマージされた結果が生成される可能性があります。一致を保証するため、イニシエーターは有効な値を常にセカンダリクエリとともに送信します (サーバーまたはプロファイルのデフォルトから取得された値のみの場合も含む) 。これにより、リモートサーバー側のデフォルトは上書きされます。
enable_parsing_to_custom_serialization
true の場合、テーブルから取得したシリアライゼーションのヒントに基づいて、カスタムシリアライゼーション (例: スパース) を使用するカラムにデータを直接パースできます。enable_producing_buckets_out_of_order_in_aggregation
メモリ効率の高い集約 (distributed_aggregation_memory_efficientを参照) で、バケットを順不同で生成できるようにします。
これにより、集約バケットのサイズに偏りがある場合でも、レプリカは id の小さい重いバケットをまだ処理している間に、id の大きいバケットをイニシエーターへ送信できるため、パフォーマンスが向上することがあります。
欠点として、メモリ使用量が増える可能性があります。
enable_quantized_codec
Quantized圧縮コーデックを有効にします。
enable_reads_from_query_cache
有効にすると、SELECT クエリの結果が クエリキャッシュ から取得されます。
設定可能な値:
- 0 - 無効
- 1 - 有効
enable_s3_requests_logging
S3 リクエストの非常に詳細なログを有効にします。デバッグ時にのみ使用するのが適切です。enable_scalar_subquery_optimization
true に設定すると、スカラーサブクエリで大きなスカラー値のシリアライズ/デシリアライズを防ぎ、同じサブクエリが複数回実行されるのを回避できる可能性があります。enable_scopes_for_with_statement
無効にすると、親の WITH 句内の宣言は、現在のスコープで宣言された場合と同じスコープとして扱われます。 これはアナライザの互換性設定であり、旧アナライザでは実行できた一部の無効なクエリも実行できるようにするものです。enable_shared_storage_snapshot_in_query
有効にすると、1 つのクエリ内のすべてのサブクエリで、各テーブルについて同じ StorageSnapshot が共有されます。 これにより、同じテーブルに複数回アクセスする場合でも、クエリ全体を通して一貫したデータビューが保証されます。 これは、データパーツの内部整合性が重要となるクエリで必要です。例:- 0 - 無効
- 1 - 有効
enable_sharing_sets_for_mutations
同じ mutation 内の異なるタスク間で、IN サブクエリ用に構築された set オブジェクトの共有を許可します。これにより、メモリ使用量と CPU 使用量を削減できますenable_streaming_queries
SELECT ... FROM t STREAM [CURSOR '{...}'] の継続クエリを許可します。
オフの場合、STREAM 修飾子を使用するテーブル式はすべて
プラン構築時に拒否されます。これは streaming-queries
機能全体を制御するゲートであり、追加の機能は
それぞれ独自の設定で制御される場合があります。
enable_sz3_codec
SZ3 圧縮コーデックを有効にします。
enable_time_series_aggregate_functions
別名:allow_experimental_ts_to_grid_aggregate_function, allow_experimental_time_series_aggregate_functions
Prometheus 風の時系列のリサンプリング、rate、delta の計算を行う timeSeries* 集約関数を有効にします。
enable_time_series_table
別名:allow_experimental_time_series_table
TimeSeries テーブルエンジンを使用したテーブルの作成を許可します。設定可能な値:
- 0 — TimeSeries テーブルエンジンは無効。
- 1 — TimeSeries テーブルエンジンは有効。
enable_time_time64_type
別名:allow_experimental_time_time64_type
Time および Time64 データ型を作成できるようにします。
enable_trino_dialect
dialect 設定の trino 値を有効にします。
dialect を trino に設定すると、クエリは Trino SQL で記述します。Trino 固有の構文 (ARRAY[...] literals、TRY_CAST、UNNEST、ROW types、LIMIT の前の OFFSET) は ClickHouse SQL に変換され、Trino の関数名は ClickHouse の同等のものにマッピングされます。SET クエリは引き続き通常の SQL としてパースされるため、ダイアレクトを元に戻すことができます。
このダイアレクトでは、クエリのセマンティクスも Trino に合わせられます。join_use_nulls が有効化され、use_variant_as_common_type が無効化され、クエリ アナライザが有効化されます。クエリ内で明示的に指定した SETTINGS clause は引き続き優先されます。
enable_unaligned_array_join
サイズの異なる複数の配列に対する ARRAY JOIN を許可します。この設定を有効にすると、配列は最も長いものに合わせてリサイズされます。enable_unique_key
別名:allow_experimental_unique_key
MergeTree ファミリーのエンジンで UNIQUE KEY 句を使用したテーブルの作成を許可します。
enable_url_encoding
URL エンジンテーブルで、URI 内のパスのデコード/エンコードを有効または無効にします。 デフォルトでは無効です。enable_vertical_final
有効にすると、FINAL 時の重複した行は、行をマージする代わりに削除済みとしてマークし、後でフィルタリングして除外しますenable_writes_to_query_cache
有効にすると、SELECT クエリの結果がクエリキャッシュに保存されます。
設定可能な値:
- 0 - 無効
- 1 - 有効
enable_zxc_codec
ZXC 圧縮コーデックを有効化します。