Skip to main content
这些设置可在 system.settings 中查看,并由 源代码 自动生成。

enable_adaptive_aggregator

启用自适应 GROUP BY 算法:每个线程先在本地哈希表中聚合,直至达到 adaptive_aggregator_freeze_threshold 个键,随后该表冻结。已出现过的高频键对应的行会继续原地更新该表;新的低频键则根据其哈希值路由到各桶的积压队列,并在桶并行合并期间仅聚合一次。高频键保留在可驻留于缓存的小型表中,低频键则只需存储和处理一次,而非每个线程各处理一次。 遵循外部聚合设置 (max_bytes_before_external_group_bymax_bytes_ratio_before_external_group_by) :超过阈值后,会将积压队列提前排空至共享表;如果仍无法降至阈值以下,则通过常规外部聚合将共享表落盘。

enable_adaptive_memory_spill_scheduler

触发处理器将数据自适应落盘到外部存储。目前仅支持 grace join。

enable_add_distinct_to_in_subqueries

IN 子查询中启用 DISTINCT。这是一个需要权衡的设置:启用后可确保仅发送唯一值,从而大幅减小分布式 IN 子查询传输的临时表大小,并显著加快分片之间的数据传输。 不过,启用此设置会增加每个节点上的额外合并开销,因为必须执行去重 (DISTINCT) 。当网络传输成为性能瓶颈,且可以接受额外的合并成本时,请使用此设置。

enable_automatic_decision_for_merging_across_partitions_for_final

如果启用此设置,当分区键表达式是确定性的,且分区键表达式中使用的所有列都包含在主键中时,ClickHouse 会自动启用此优化。 这种自动推导可确保具有相同主键值的行始终属于同一分区,因此可以安全地避免跨分区合并。

enable_cascades_optimizer

为分布式查询计划启用 Cascades 成本优化器。 仅当同时设置 make_distributed_plan = 1 时才生效:仅启用此设置不会改变单节点查询的规划方式。

enable_early_constant_folding

启用查询优化:分析函数和子查询的结果,并在其中包含常量时重写查询

enable_extended_results_for_datetime_functions

启用或禁用返回扩展范围的 Date32 类型结果 (相对于 Date 类型) , 或返回扩展范围的 DateTime64 类型结果 (相对于 DateTime 类型) 。 可能的值:
  • 0 — 对于所有类型的参数,函数均返回 DateDateTime
  • 1 — 对于 Date32DateTime64 参数,函数返回 Date32DateTime64;否则返回 DateDateTime
下表展示了此设置对各种日期时间函数的影响。

enable_full_text_index

别名: allow_experimental_full_text_index 如果设置为 true,则允许使用文本索引。

enable_global_with_statement

将 WITH 语句应用于 UNION 查询和所有子查询

enable_hdfs_pread

控制是否对 HDFS 文件启用 pread。默认使用 hdfsPread。如果禁用,则会使用 hdfsReadhdfsSeek 来读取 HDFS 文件。

enable_http_compression

启用或禁用 HTTP 请求响应中的数据压缩。 如需了解更多信息,请参阅 HTTP 接口说明 可选值:
  • 0 — 禁用。
  • 1 — 启用。

enable_identifier_resolve_cache

在查询分析器中启用标识符解析缓存。该缓存会共享已解析的别名节点,以防止同一别名被多次引用时 AST 膨胀。若怀疑结果不正确,可将其设为 false 以禁用缓存。

enable_job_stack_trace

当 job 导致异常时,输出 job 创建者的堆栈跟踪。默认禁用,以避免性能开销。

enable_json_ast_dialect

启用 dialect 设置的 clickhouse_json 值。 dialect 设置为 clickhouse_json 时,查询将被解释为 JSON AST (即 parseQueryToJSON 的输出) ,而非 SQL 文本。SET 查询仍会 按普通 SQL 解析,以便切换回其他方言。 示例:

enable_lazy_columns_replication

启用 JOINARRAY JOIN 和高阶函数 (如 arrayMap) 的 lambda 捕获中的惰性列复制,可避免在内存中多次不必要地复制相同的行。

enable_materialized_cte

启用物化公共表表达式;该设置的优先级高于 enable_global_with_statement

enable_memory_bound_merging_of_aggregation_results

启用用于聚合的内存受限合并策略。

enable_multiple_prewhere_read_steps

如果有多个通过 AND 组合的条件,则会将更多条件从 WHERE 移到 PREWHERE,并分多个步骤从磁盘读取数据并进行过滤

enable_named_columns_in_function_tuple

当所有名称都是唯一的,且可视为未加引号的标识符时,在函数 tuple() 中生成命名元组。

enable_order_by_all

启用或禁用 ORDER BY ALL 排序语法,参见 ORDER BY 可能的值:
  • 0 — 禁用 ORDER BY ALL。
  • 1 — 启用 ORDER BY ALL。
示例 查询:
结果:

enable_packed_string_keys_in_aggregation

对于只有一个不可为 NULL 的 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

如果为 true,则可根据从表中获得的序列化提示,直接将数据解析到使用自定义序列化 (例如 Sparse) 的列中。

enable_producing_buckets_out_of_order_in_aggregation

允许内存高效的聚合 (参见 distributed_aggregation_memory_efficient) 以乱序方式生成桶。 当聚合桶的大小分布不均时,这可能会提升性能:副本在仍处理某些 id 较低的大桶时,可以先向发起节点发送 id 较高的桶。 缺点是内存使用量可能会增加。

enable_reads_from_query_cache

启用后,将从查询缓存中读取 SELECT 查询结果。 可能的值:
  • 0 - 禁用
  • 1 - 启用

enable_s3_requests_logging

启用极其详细的 S3 请求日志。仅建议在调试时使用。

enable_scalar_subquery_optimization

如果将其设置为 true,则可防止标量子查询对大型标量值进行 (反) 序列化,并尽可能避免同一子查询被执行多次。

enable_scopes_for_with_statement

如果禁用,父级 WITH 子句中的声明将与在当前作用域中声明时具有相同的作用域行为。 请注意,这是 analyzer 的一个兼容性设置,用于允许运行一些旧 analyzer 能够执行的无效查询。

enable_sharding_aggregator

启用分片式 GROUP BY 优化。该优化通过对分组键进行哈希计算,将行分发到各个线程,使每个线程聚合一组互不重叠的键子集,无需经过 merge 阶段。 对于数据分布均匀的高基数键,这种方式效率很高;但如果键分布严重倾斜,或查询中的不同键非常少,则效果可能不佳。 可能的值:
  • 0 — 禁用分片聚合优化。
  • 1 — 启用分片聚合优化。

enable_shared_storage_snapshot_in_query

如果启用,单个查询中的所有子查询在访问每个表时都将共享同一个 StorageSnapshot。 这样可确保整个查询中的数据视图保持一致,即使同一个表被多次访问也是如此。 对于那些需要保证数据分区片段内部一致性的查询,此设置是必需的。示例:
如果没有此设置,外层查询和内层查询可能会基于不同的数据快照执行,从而导致结果不正确。 可能的值:
  • 0 - 已禁用
  • 1 - 已启用

enable_sharing_sets_for_mutations

允许在同一变更的不同任务之间共享为 IN 子查询构建的 Set 对象。这可以减少内存占用和 CPU 消耗

enable_streaming_queries

允许 SELECT ... FROM t STREAM [CURSOR '{...}'] 持续查询。 关闭时,任何使用 STREAM 修饰符的表表达式都会在构建执行计划时 被拒绝。这是流式查询功能的总开关; 其他能力也可能受其各自设置的控制。

enable_time_time64_type

别名: allow_experimental_time_time64_type 允许创建 TimeTime64 数据类型。

enable_unaligned_array_join

允许对多个长度不同的数组使用 ARRAY JOIN。启用此设置后,数组会被调整到与最长数组相同的长度。

enable_url_encoding

允许在 URL 引擎表中启用或禁用对 URI 中路径的编码/解码。 默认禁用。

enable_vertical_final

如果启用,则在 FINAL 期间会通过将行标记为已删除并在后续进行过滤来移除重复行,而不是通过合并行来实现

enable_writes_to_query_cache

启用后,SELECT 查询的结果会存储在查询缓存中。 可能的值:
  • 0 - 禁用
  • 1 - 启用
最后修改于 2026年8月18日