enable_adaptive_aggregator
GROUP BY 算法:每个线程先在本地哈希表中聚合,直至达到 adaptive_aggregator_freeze_threshold 个键 (或占用 adaptive_aggregator_freeze_threshold_bytes 内存) ,随后该表冻结。已出现过的高频键对应的行会继续原地更新该表;新的低频键则根据其哈希值路由到各桶的积压队列,并在桶并行合并期间仅聚合一次。高频键保留在可驻留于缓存的小型表中,低频键则只需存储和处理一次,而非每个线程各处理一次。
遵循外部聚合设置 (max_bytes_before_external_group_by、max_bytes_ratio_before_external_group_by) :超过阈值后,会将积压队列提前排空至共享表;如果仍无法降至阈值以下,则通过常规外部聚合将共享表落盘。
enable_adaptive_memory_spill_scheduler
enable_add_distinct_to_in_subqueries
IN 子查询中启用 DISTINCT。这是一个需要权衡的设置:启用后可确保仅发送唯一值,从而大幅减小分布式 IN 子查询传输的临时表大小,并显著加快分片之间的数据传输。
不过,启用此设置会增加每个节点上的额外合并开销,因为必须执行去重 (DISTINCT) 。当网络传输成为性能瓶颈,且可以接受额外的合并成本时,请使用此设置。
enable_alp_codec
ALP 压缩编解码器。
enable_automatic_decision_for_merging_across_partitions_for_final
enable_cascades_optimizer
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_global_with_statement
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 不会影响哪些组可入选,因此不会禁用此优化) 、按聚合结果或任何并非 GROUP BY 键前导前缀的内容执行的 ORDER BY,以及设置了 max_rows_to_group_by 或 exact_rows_before_limit 的情况。
可能的值:
- 0 — 已禁用。
- 1 — 已启用。
enable_hash_join_row_store
enable_hdfs_pread
hdfsPread。如果禁用,则会使用 hdfsRead 和 hdfsSeek 来读取 HDFS 文件。
enable_http_compression
- 0 — 禁用。
- 1 — 启用。
enable_identifier_resolve_cache
enable_job_stack_trace
enable_json_ast_dialect
dialect 设置的 clickhouse_json 值。
当 dialect 设置为 clickhouse_json 时,查询将被解释为 JSON AST
(即 parseQueryToJSON 的输出) ,而非 SQL 文本。SET 查询仍会
按普通 SQL 解析,以便切换回其他方言。
示例:
enable_lazy_columns_replication
JOIN、ARRAY JOIN 和高阶函数 (如 arrayMap) 的 lambda 捕获中的惰性列复制,可避免在内存中多次不必要地复制相同的行。
enable_materialized_cte
enable_memory_bound_merging_of_aggregation_results
enable_multiple_prewhere_read_steps
enable_named_columns_in_function_tuple
enable_order_by_all
ORDER BY ALL 排序语法,参见 ORDER BY。
可能的值:
- 0 — 禁用 ORDER BY ALL。
- 1 — 启用 ORDER BY ALL。
enable_packed_string_keys_in_aggregation
String 键的 GROUP BY,使用以 16 字节压缩字符串引用 (PackedStringRef) 为键的哈希表。长度不超过 11 字节的键以内联方式存储在压缩引用中;较长的键则引用 Arena 中的内容。
这对大多数工作负载而言更快,但对于不同键数量极少且键长度超过 11 字节 (尤其是 12..24 字节) 的 GROUP BY,其速度可能比旧版方法更慢;旧版哈希表会将键内联保存在单元中,而压缩方法每次探测时都需要解引用 Arena 指针。
禁用时,将使用基于旧版 StringHashTable 的方法 (26.8 之前的默认方法) 。
参与分布式查询的所有服务器必须使用相同的值:使用 distributed_aggregation_memory_efficient 时,两级桶编号取决于键的哈希值,而两种方法的键哈希不同,因此设置值不一致的服务器可能会将同一个键分到不同桶中,导致合并结果不正确。为确保一致性,发起者始终会随次级查询发送其生效值 (即使该值仅来自服务器/profile 默认值) ,从而覆盖远程服务器自身的默认值。
enable_parsing_to_custom_serialization
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
enable_scalar_subquery_optimization
enable_scopes_for_with_statement
enable_sharding_aggregator
GROUP BY 优化。该优化通过对分组键进行哈希计算,将行分发到各个线程,使每个线程聚合一组互不重叠的键子集,无需经过 merge 阶段。
对于数据分布均匀的高基数键,这种方式效率很高;但如果键分布严重倾斜,或查询中的不同键非常少,则效果可能不佳。
可能的值:
- 0 — 禁用分片聚合优化。
- 1 — 启用分片聚合优化。
- 0 - 已禁用
- 1 - 已启用
enable_sharing_sets_for_mutations
enable_streaming_queries
SELECT ... FROM t STREAM [CURSOR '{...}'] 持续查询。
关闭时,任何使用 STREAM 修饰符的表表达式都会在构建执行计划时
被拒绝。这是流式查询功能的总开关;
其他能力也可能受其各自设置的控制。
enable_sz3_codec
SZ3 压缩编解码器。
enable_time_time64_type
allow_experimental_time_time64_type
允许创建 Time 和 Time64 数据类型。
enable_unaligned_array_join
enable_url_encoding
enable_vertical_final
enable_writes_to_query_cache
SELECT 查询的结果会存储在查询缓存中。
可能的值:
- 0 - 禁用
- 1 - 启用
enable_zxc_codec
ZXC 压缩编解码器。