Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

enable_* 会话设置

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

enable_adaptive_aggregator

类型
Bool
默认值
1
版本历史
版本默认值注释
26.81新增设置,用于启用自适应 `GROUP BY` 聚合:每个线程的本地哈希表达到 `adaptive_aggregator_freeze_threshold` 个键后即冻结。高频键继续在较小的本地表中聚合,低频键则根据其哈希值路由到各桶的积压队列,并在桶并行合并期间仅聚合一次;因此低频键只需存储和处理一次,而非每个线程各处理一次。

启用自适应 GROUP BY 算法:每个线程先在本地哈希表中聚合,直至达到 adaptive_aggregator_freeze_threshold 个键 (或占用 adaptive_aggregator_freeze_threshold_bytes 内存) ,随后该表冻结。已出现过的高频键对应的行会继续原地更新该表;新的低频键则根据其哈希值路由到各桶的积压队列,并在桶并行合并期间仅聚合一次。高频键保留在可驻留于缓存的小型表中,低频键则只需存储和处理一次,而非每个线程各处理一次。

遵循外部聚合设置 (max_bytes_before_external_group_bymax_bytes_ratio_before_external_group_by) :超过阈值后,会将积压队列提前排空至共享表;如果仍无法降至阈值以下,则通过常规外部聚合将共享表落盘。

enable_adaptive_memory_spill_scheduler

Experimental 功能
类型
Bool
默认值
0
版本历史
版本默认值注释
25.20新设置。启用将内存数据自适应落盘到外部存储。

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

enable_add_distinct_to_in_subqueries

类型
Bool
默认值
0
版本历史
版本默认值注释
25.80用于减小分布式 IN 子查询传输的临时表大小的新设置。

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

enable_alp_codec

Experimental 功能
类型
Bool
默认值
0
版本历史
版本默认值注释
26.80新增设置,可单独启用 Experimental `ALP` 压缩编解码器,无需启用 `allow_experimental_codecs`。

允许使用 Experimental ALP 压缩编解码器。

enable_automatic_decision_for_merging_across_partitions_for_final

类型
Bool
默认值
1
版本历史
版本默认值注释
26.21新设置

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

enable_cascades_optimizer

Experimental 功能
类型
Bool
默认值
0
版本历史
版本默认值注释
26.80新增实验性设置。

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

enable_early_constant_folding

类型
Bool
默认值
1

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

enable_extended_results_for_datetime_functions

类型
Bool
默认值
0

启用或禁用返回扩展范围的 Date32 类型结果 (相对于 Date 类型) , 或返回扩展范围的 DateTime64 类型结果 (相对于 DateTime 类型) 。

可能的值:

  • 0 — 对于所有类型的参数,函数均返回 DateDateTime
  • 1 — 对于 Date32DateTime64 参数,函数返回 Date32DateTime64;否则返回 DateDateTime

下表展示了此设置对各种日期时间函数的影响。

函数 enable_extended_results_for_datetime_functions = 0 enable_extended_results_for_datetime_functions = 1
toStartOfYear 返回 Date日期时间 输入为 Date/DateTime 时,返回 Date/DateTime
输入为 Date32/DateTime64 时,返回 Date32/DateTime64
toStartOfISOYear 返回 DateDateTime 输入为 Date/DateTime 时,返回 Date/DateTime
输入为 Date32/DateTime64 时,返回 Date32/DateTime64
toStartOfQuarter 返回 Date日期时间 对于 Date/DateTime 类型的输入,返回 Date/DateTime
对于 Date32/DateTime64 类型的输入,返回 Date32/DateTime64
toStartOfMonth 返回 Date日期时间 对于 Date/DateTime 类型的输入,返回 Date/DateTime
对于 Date32/DateTime64 类型的输入,返回 Date32/DateTime64
toStartOfWeek 返回 DateDateTime Date/DateTime 输入时,返回 Date/DateTime
Date32/DateTime64 输入时,返回 Date32/DateTime64
toLastDayOfWeek 返回 DateDateTime 输入为 Date/DateTime 时,返回 Date/DateTime
输入为 Date32/DateTime64 时,返回 Date32/DateTime64
toLastDayOfMonth 返回 DateDateTime 对于 Date/DateTime 类型的输入,返回 Date/DateTime
对于 Date32/DateTime64 类型的输入,返回 Date32/DateTime64
toMonday 返回 DateDateTime 对于 Date/DateTime 类型的输入,返回 Date/DateTime
对于 Date32/DateTime64 类型的输入,返回 Date32/DateTime64
toStartOfDay 返回 DateTime
注:对于超出 1970-2149 范围的值,结果会不正确
Date/DateTime 输入时,返回 DateTime
Date32/DateTime64 输入时,返回 DateTime64
toStartOfHour 返回 DateTime
注意:对于超出 1970-2149 范围的值,结果会不正确。
输入为 Date/DateTime 时,返回 DateTime
输入为 Date32/DateTime64 时,返回 DateTime64
toStartOfFifteenMinutes 返回 DateTime
注意:对于超出 1970-2149 范围的值,会返回错误结果
对于 Date/DateTime 输入,返回 DateTime
对于 Date32/DateTime64 输入,返回 DateTime64
toStartOfTenMinutes 返回 DateTime
注意:对于超出 1970-2149 范围的值,结果会不正确
对于 Date/DateTime 类型的输入,返回 DateTime
对于 Date32/DateTime64 类型的输入,返回 DateTime64
toStartOfFiveMinutes 返回 日期时间
注:对于超出 1970-2149 范围的值,结果可能不正确。
对于 Date/DateTime 输入,返回 DateTime
对于 Date32/DateTime64 输入,返回 DateTime64
toStartOfMinute 返回 DateTime
注:对于超出 1970-2149 范围的值,结果会出错
输入为 Date/DateTime 时,返回 DateTime
输入为 Date32/DateTime64 时,返回 DateTime64
timeSlot 返回 DateTime
注意:对于超出 1970-2149 范围的值,结果会不正确。
对于 Date/DateTime 类型的输入,返回 DateTime
对于 Date32/DateTime64 类型的输入,返回 DateTime64

enable_full_text_index

别名: allow_experimental_full_text_index

类型
Bool
默认值
1
版本历史
版本默认值注释
26.21文本索引现已进入 GA 阶段
25.120文本索引已调整为 Beta 阶段。

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

enable_function_early_short_circuit

类型
Bool
默认值
0
版本历史
版本默认值注释
26.80New setting

在查询分析阶段,为 andor 启用提前短路常量折叠。 启用后,会分析符合条件的不可达标量子查询分支,以保留其类型并验证查询语义,但不会执行这些分支。当需要确定标量基数或运行时值时,该优化会回退到常规分析。

enable_global_with_statement

类型
Bool
默认值
1
版本历史
版本默认值注释
21.21默认将 WITH 语句应用于 UNION 查询和所有子查询

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

enable_group_by_top_k_optimization

类型
Bool
默认值
1
版本历史
版本默认值注释
26.81用于控制 `GROUP BY key ORDER BY key LIMIT N` 查询中聚合阶段 TopK 筛选优化的新设置。

GROUP BY keys ORDER BY <prefix of keys> LIMIT K 查询中,以及不含 ORDER BYGROUP 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 TOTALSHAVINGQUALIFY、窗口函数、ROLLUP/CUBE/GROUPING SETSLIMIT WITH TIES、任一匹配的 GROUP BY 键上的 COLLATE (完整键前缀之后的 ORDER BY 列上的 COLLATE 不会影响哪些组可入选,因此不会禁用此优化) 、按聚合结果或任何并非 GROUP BY 键前导前缀的内容执行的 ORDER BY,以及设置了 max_rows_to_group_byexact_rows_before_limit 的情况。

可能的值:

  • 0 — 已禁用。
  • 1 — 已启用。

enable_hash_join_row_store

类型
Bool
默认值
1
版本历史
版本默认值注释
26.91新增设置,用于将哈希连接的载荷转换为行主序布局。

启用将哈希连接的载荷转换为行主序布局。

enable_hdfs_pread

类型
Bool
默认值
1
版本历史
版本默认值注释
25.41新增设置。

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

enable_http_compression

类型
Bool
默认值
1
版本历史
版本默认值注释
25.101一般来说,启用此项会更有益

启用或禁用 HTTP 请求响应中的数据压缩。

如需了解更多信息,请参阅 HTTP 接口说明

可选值:

  • 0 — 禁用。
  • 1 — 启用。

enable_identifier_resolve_cache

类型
Bool
默认值
1
版本历史
版本默认值注释
26.61用于控制查询分析器中标识符解析缓存的新设置

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

enable_job_stack_trace

类型
Bool
默认值
0
版本历史
版本默认值注释
25.60此设置默认禁用,以避免性能开销。
24.110启用收集 job 调度过程中的堆栈跟踪。默认禁用,以避免性能开销。

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

enable_json_ast_dialect

Experimental 功能
类型
Bool
默认值
0
版本历史
版本默认值注释
26.80新增设置,用于启用 `dialect` 设置的 `clickhouse_json` 值;该值会将查询解释为 JSON AST(即 `parseQueryToJSON` 的输出),而非 SQL 文本。

启用 dialect 设置的 clickhouse_json 值。

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

示例:

SET enable_json_ast_dialect = 1;
SET dialect = 'clickhouse_json';

-- Subsequent queries are parsed as JSON ASTs:
{"type":"SelectWithUnionQuery", ...}

enable_lazy_columns_replication

类型
Bool
默认值
1
版本历史
版本默认值注释
25.111默认在 JOIN 和 ARRAY JOIN 中启用惰性列复制
25.100添加一个设置,用于在 JOIN 和 ARRAY JOIN 中启用惰性列复制

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

enable_materialized_cte

Experimental 功能
类型
Bool
默认值
0
版本历史
版本默认值注释
26.30新设置

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

enable_memory_bound_merging_of_aggregation_results

类型
Bool
默认值
1

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

enable_multiple_prewhere_read_steps

类型
Bool
默认值
1

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

enable_named_columns_in_function_tuple

类型
Bool
默认值
0
版本历史
版本默认值注释
24.70当所有名称都是唯一的,且可视为未加引号的标识符时,在函数 tuple() 中生成命名元组。
24.100因易用性改进而暂时禁用

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

enable_order_by_all

类型
Bool
默认值
1

启用或禁用 ORDER BY ALL 排序语法,参见 ORDER BY

可能的值:

  • 0 — 禁用 ORDER BY ALL。
  • 1 — 启用 ORDER BY ALL。

示例

查询:

CREATE TABLE TAB(C1 Int, C2 Int, ALL Int) ENGINE=Memory();

INSERT INTO TAB VALUES (10, 20, 30), (20, 20, 10), (30, 10, 20);

SELECT * FROM TAB ORDER BY ALL; -- returns an error that ALL is ambiguous

SELECT * FROM TAB ORDER BY ALL SETTINGS enable_order_by_all = 0;

结果:

┌─C1─┬─C2─┬─ALL─┐
│ 20 │ 20 │  10 │
│ 30 │ 10 │  20 │
│ 10 │ 20 │  30 │
└────┴────┴─────┘

enable_packed_string_keys_in_aggregation

类型
Bool
默认值
1
版本历史
版本默认值注释
26.81用于切换基于 `PackedStringRef` 的哈希表的新设置,适用于单个 `String` 键的 GROUP BY。previous_value=false,因此设置 `compatibility` 为 26.8 之前的版本时,会恢复基于旧版 `StringHashTable` 的方法,包括其两级分桶机制。

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

类型
Bool
默认值
1
版本历史
版本默认值注释
24.101新设置

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

enable_producing_buckets_out_of_order_in_aggregation

类型
Bool
默认值
1
版本历史
版本默认值注释
25.91新设置

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

enable_quantized_codec

Experimental 功能
类型
Bool
默认值
0
版本历史
版本默认值注释
26.80新增设置,可在不启用 `allow_experimental_codecs` 的情况下单独启用 Experimental `Quantized` 压缩编解码器。

允许使用 Experimental Quantized 压缩编解码器。

enable_reads_from_query_cache

类型
Bool
默认值
1

启用后,将从查询缓存中读取 SELECT 查询结果。

可能的值:

  • 0 - 禁用
  • 1 - 启用

enable_s3_requests_logging

类型
Bool
默认值
0

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

enable_scalar_subquery_optimization

类型
Bool
默认值
1
版本历史
版本默认值注释
19.181防止标量子查询对大型标量值进行(反)序列化,并尽可能避免同一子查询被执行多次

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

enable_scopes_for_with_statement

类型
Bool
默认值
1
版本历史
版本默认值注释
25.71为与旧 analyzer 向后兼容而新增的设置。
25.61为与旧 analyzer 向后兼容而新增的设置。
25.51为与旧 analyzer 向后兼容而新增的设置。
25.41为与旧 analyzer 向后兼容而新增的设置。

如果禁用,父级 WITH 子句中的声明将与在当前作用域中声明时具有相同的作用域行为。

请注意,这是 analyzer 的一个兼容性设置,用于允许运行一些旧 analyzer 能够执行的无效查询。

enable_sharding_aggregator

类型
Bool
默认值
0
版本历史
版本默认值注释
26.60用于启用分片式 `GROUP BY` 优化的新设置。该优化通过对分组键进行哈希计算,将行分发到各个线程,使每个线程聚合一组互不重叠的键子集,无需经过 merge 阶段;对于数据分布均匀的高基数键,这种方式效率很高。

启用分片式 GROUP BY 优化。该优化通过对分组键进行哈希计算,将行分发到各个线程,使每个线程聚合一组互不重叠的键子集,无需经过 merge 阶段。

对于数据分布均匀的高基数键,这种方式效率很高;但如果键分布严重倾斜,或查询中的不同键非常少,则效果可能不佳。

可能的值:

  • 0 — 禁用分片聚合优化。
  • 1 — 启用分片聚合优化。

enable_shared_storage_snapshot_in_query

类型
Bool
默认值
1
版本历史
版本默认值注释
25.60用于在查询中共享存储快照的新设置
25.121默认启用在查询中共享存储快照

如果启用,单个查询中的所有子查询在访问每个表时都将共享同一个 StorageSnapshot。 这样可确保整个查询中的数据视图保持一致,即使同一个表被多次访问也是如此。

对于那些需要保证数据分区片段内部一致性的查询,此设置是必需的。示例:

SELECT
    count()
FROM events
WHERE (_part, _part_offset) IN (
    SELECT _part, _part_offset
    FROM events
    WHERE user_id = 42
)

如果没有此设置,外层查询和内层查询可能会基于不同的数据快照执行,从而导致结果不正确。

可能的值:

  • 0 - 已禁用
  • 1 - 已启用

enable_sharing_sets_for_mutations

类型
Bool
默认值
1

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

enable_streaming_queries

Experimental 功能
类型
Bool
默认值
0
版本历史
版本默认值注释
26.60新增设置

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

enable_sz3_codec

Experimental 功能
类型
Bool
默认值
0
版本历史
版本默认值注释
26.80新增设置,可在不启用 `allow_experimental_codecs` 的情况下单独启用 Experimental `SZ3` 压缩编解码器。

允许使用 Experimental SZ3 压缩编解码器。

enable_time_time64_type

别名: allow_experimental_time_time64_type

类型
Bool
默认值
1
版本历史
版本默认值注释
25.60新设置。允许使用新的 Experimental Time 和 Time64 数据类型。
25.121默认启用 Time 和 Time64 类型。

允许创建 TimeTime64 数据类型。

enable_unaligned_array_join

类型
Bool
默认值
0

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

enable_url_encoding

类型
Bool
默认值
0
版本历史
版本默认值注释
25.50更改了现有设置的默认值

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

默认禁用。

enable_vertical_final

类型
Bool
默认值
1
版本历史
版本默认值注释
24.61修复 bug 后,再次默认启用 vertical final
24.11默认使用 vertical final

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

enable_writes_to_query_cache

类型
Bool
默认值
1

启用后,SELECT 查询的结果会存储在查询缓存中。

可能的值:

  • 0 - 禁用
  • 1 - 启用

enable_zxc_codec

Experimental 功能
类型
Bool
默认值
0
版本历史
版本默认值注释
26.80新增设置,可单独启用Experimental `ZXC` 压缩编解码器,无需启用 `allow_experimental_codecs`。

允许使用Experimental ZXC 压缩编解码器。

Navigation