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

allow_aggregate_partitions_independently

当分区键适合 GROUP BY 键时,启用在独立线程上对各分区分别进行聚合。当分区数量接近 CPU 核心数,且各分区大小大致相同时,此功能最有利。ReadFromMergeTree 中的启发式规则会在布局不理想时 (分区过少、分区过多,或分区大小严重失衡) 自动禁用该优化;如需绕过这些检查,请参见 force_aggregate_partitions_independently

allow_archive_path_syntax

File/S3 引擎/表函数会将包含 ’::’ 的路径解析为 <archive> :: <file>,前提是归档文件具有正确的扩展名。

allow_asynchronous_read_from_io_pool_for_merge_tree

使用后台 I/O 线程池从 MergeTree 表中读取数据。此设置可能会提高受 I/O 限制的查询的性能

allow_calculating_subcolumns_sizes_for_merge_tree_reading

启用后,ClickHouse 将计算读取每个子列所需文件的大小,以便更准确地计算任务大小和块大小。

allow_changing_replica_until_first_data_packet

如果启用,在对冲请求中,即使已经有了一些进度,也可以在收到第一个数据包之前发起新的连接 (但在 receive_data_timeout 超时时间内进度没有更新) ;否则,一旦首次取得进度,就会禁止切换副本。

allow_create_index_without_type

允许执行不带 TYPE 的 CREATE INDEX 查询。该查询会被忽略。此设置用于 SQL 兼容性测试。

allow_custom_error_code_in_throwif

在 throwIf() 函数中启用自定义错误代码。如果为 true,抛出的异常可能带有非预期的错误代码。

allow_ddl

如果设置为 true,则用户可以执行 DDL 查询。

allow_delta_kernel_rs

别名allow_experimental_delta_kernel_rs 允许使用 delta-kernel-rs 实现读取 Delta Lake 表。

allow_distinct_partitions_independently

当分区表达式是 DISTINCT 列的确定性函数时,启用在独立线程中按分区计算 DISTINCT,从而跳过跨流合并。当分区数接近 CPU 核心数且各分区大小大致相同时,此设置会带来收益;否则,成本启发式策略会跳过此优化。请参阅 max_number_of_partitions_for_independent_distinctforce_distinct_partitions_independently。不适用于 FINAL 或并行副本。 设置 max_rows_in_distinctmax_bytes_in_distinct 时,不会应用此设置:这些限制由可见整个合并结果的单个 DISTINCT 转换执行,因此会保留跨流合并,以确保其全局语义。

allow_distributed_ddl

如果设置为 true,则允许用户执行分布式 DDL 查询。

allow_drop_detached

允许执行 ALTER TABLE … DROP DETACHED PART[ITION] … 语句

allow_dynamic_type_in_join_keys

允许在 JOIN 连接键中使用 Dynamic 类型。此设置是为兼容性而添加的。不建议在 JOIN 连接键中使用 Dynamic 类型,因为与其他类型比较时可能会产生意外结果。

allow_execute_multiif_columnar

允许以列式方式执行 multiIf 函数

allow_fuzz_query_functions

启用 fuzzQuery 函数,该函数会对查询字符串进行随机 AST 变更。

allow_general_join_planning

允许使用一种更通用的 JOIN 规划算法,可处理更复杂的条件,但仅适用于 hash join。如果未启用 hash join,则无论此设置的值如何,都会使用常规的 JOIN 规划算法。

allow_get_client_http_header

允许使用函数 getClientHTTPHeader,该函数可用于获取当前 HTTP 请求的请求头值。出于安全考虑,此功能默认未启用,因为某些请求头 (如 Cookie) 可能包含敏感信息。请注意,X-ClickHouse-*AuthenticationAuthorization 请求头始终受限,无法通过此函数获取。

allow_hyperscan

允许使用 Hyperscan 库的函数。禁用此设置可避免潜在的编译时间过长以及资源占用过高。

allow_iceberg_remove_orphan_files

允许对 Iceberg 表执行 ‘ALTER TABLE … EXECUTE remove_orphan_files()‘。

allow_insert_into_iceberg

别名: allow_experimental_insert_into_iceberg 允许执行向 Iceberg 插入数据的 insert 查询。

allow_introspection_functions

启用或禁用用于查询性能分析的内部信息函数 可选值:
  • 1 — 启用内部信息函数。
  • 0 — 禁用内部信息函数。
另请参阅

allow_key_condition_coalesce_rewrite

在索引分析之前,将形如 coalesce(a_1, ..., a_N) <op> const 的谓词 (以及等价的 ifNull 形式,或常量在左侧的情况) 重写为析取形式 (a_1 <op> const) OR (a_1 IS NULL AND a_2 <op> const) OR ... OR (a_1 IS NULL AND ... AND a_{N-1} IS NULL AND a_N <op> const),从而可以使用每个 a_i 上的按列主键和跳过索引。支持部分常量形式,例如 coalesce(a, 42, b)coalesce(a, b, 42):参数列表会像 coalesce 本身一样进行归一化 (丢弃 NULL 字面量,以及第一个非 Nullable 参数之后的参数) ;如果末尾存在非 NULL 常量,则会将其作为最终分支输出。此重写仅用于增强索引裁剪;运行时过滤仍使用原始谓词。 此外,形如 nullIf(key, sentinel) = const 的精确相等谓词 (其中 sentinel != const 且类型完全匹配) 会被重写为 key = const,以便 key 上的主键、分区和跳过索引可以直接裁剪粒度。不支持对范围条件和析取式 nullIf 进行裁剪。

allow_limit_by_partitions_independently

当分区表达式是 LIMIT BY 列的确定性函数时,启用在独立线程中按分区分别计算 LIMIT BY

allow_lossy_numeric_supertype

启用后,if/multiIf/coalesce/ifNull/array/map 在处理一组不存在无损公共类型的数值参数时 (例如 DecimalFloat64,或 Int64Float64) ,会将其解析为数值超类型 (Float64) ,而非报错,但可能损失精度。这样,结果便可直接用于 sumavgminmax 等合并值的聚合函数。此设置独立于 use_variant_as_common_type:无论是否启用 use_variant_as_common_type,都会生成数值超类型。禁用时 (默认) ,此类参数集没有公共类型,因此若启用了 use_variant_as_common_type,会成为 Variant;否则会引发 NO_COMMON_TYPE

allow_materialized_view_with_bad_select

允许 CREATE MATERIALIZED VIEW 使用引用不存在表或列的 SELECT 查询。但该查询在语法上仍必须有效。不适用于 refreshable MV。如果 MV 的 schema 需要从 SELECT 查询中推断,也不适用 (即 CREATE 没有列列表,且没有 TO table) 。可用于在源表创建之前先创建 MV。

allow_metadata_only_named_tuple_alter

如果为 true,则对于仅添加新子字段的命名 Tuple,ALTER MODIFY COLUMN 操作仅修改元数据 (不会进行数据变更) 。 设为 false 可强制使用旧的完整变更行为。

allow_minmax_index_for_json

允许在 JSON (Object) 列上创建 minmax 跳过索引。默认处于禁用状态,因为 minmax 索引的序列化过程无法处理 JSON 列中可能包含的不同类型的 Field 值。

allow_named_collection_override_by_default

默认允许覆盖命名集合中的字段。

allow_non_metadata_alters

允许执行不仅会影响表元数据,还会影响磁盘上数据的 alter 操作

allow_nonconst_timezone_arguments

允许在某些与时间相关的函数中使用非常量时区参数,例如 toTimeZone()、fromUnixTimestamp*() 和 snowflakeIDToDateTime*()。 此设置仅为兼容性而保留。在 ClickHouse 中,时区是数据类型的属性,也就是列的属性。 启用此设置会给人一种错误的印象,仿佛同一列中的不同值可以具有不同的时区。 因此,请不要启用此设置。

allow_nullable_tuple_in_extracted_subcolumns

控制类型为 Tuple(...) 的提取子列是否可以设为 Nullable(Tuple(...)) 类型。
  • false:返回 Tuple(...),并对缺少该子列的行使用默认 Tuple 值。
  • true:返回 Nullable(Tuple(...)),并对缺少该子列的行使用 NULL
此设置仅控制提取子列的行为。 它不控制是否可以在表中创建 Nullable(Tuple(...)) 列;这一点由 enable_nullable_tuple_type 控制。 ClickHouse 使用服务器启动时加载的此设置值。 通过 SET 或查询级 SETTINGS 所做的更改不会改变提取子列的行为。 要更改提取子列的行为,请在启动 profile 配置 (例如 users.xml) 中更新 allow_nullable_tuple_in_extracted_subcolumns,然后重启服务器。

allow_rank_dense_rank_arguments

允许向 RANKDENSE_RANK 窗口函数传递参数,以保持向后兼容。 根据 SQL 标准,RANKDENSE_RANK 不接受任何参数——它们仅根据 OVER (ORDER BY ...) 窗口对行进行排名。在 26.5 之前的 ClickHouse 版本中,类似 RANK(x) OVER (...) 的查询会静默接受并忽略该参数,这会导致用户困惑 (显式写出的参数看起来似乎会影响排名,但实际上并不会) 。 当此设置为 false (默认值) 时,RANKDENSE_RANK 会拒绝任何参数,并 抛出 NUMBER_OF_ARGUMENTS_DOESNT_MATCH。当设为 true 时,将恢复旧版的宽松行为—— 参数会被静默忽略,与 26.5 之前的行为一致。

allow_reorder_prewhere_conditions

将条件从 WHERE 移至 PREWHERE 时,允许重新排序这些条件,以优化筛选

allow_replace_partition_from_empty_source

允许在源表对应分区中没有 parts 时,ALTER TABLE ... REPLACE PARTITION ... FROM ... 静默删除目标端分区。 默认情况下不允许这样做:如果源表在请求的分区中没有数据,那么从该源执行 REPLACE PARTITION 会抛出异常,因为这种情况下,该操作实际上等同于对目标端静默执行 DROP PARTITION (目标端数据会被删除,但不会有任何内容替换它) ,这也是意外数据丢失的常见原因 (参见 #23727) 。 启用此设置可恢复之前的行为,例如当你有意使用空源分区来清空目标端数据时。若要无条件删除,建议直接改用 ALTER TABLE ... DROP PARTITION ...

allow_settings_after_format_in_insert

控制是否允许在 INSERT 查询中于 FORMAT 之后使用 SETTINGS。不建议使用此设置,因为这可能会将 SETTINGS 的一部分解释为值。 示例:
但以下查询只有在启用 allow_settings_after_format_in_insert 时才能运行:
可能的值:
  • 0 — 禁止。
  • 1 — 允许。
仅当你的用例依赖旧语法、需要保持向后兼容时,才使用此设置。

allow_simdjson

如果支持 AVX2 指令,则允许在 JSON* 函数中使用 simdjson 库。禁用后将使用 rapidjson。

allow_special_serialization_kinds_in_output_formats

允许直接输出具有 Sparse 和 Replicated 等特殊序列化类型的列,而无需将其转换为普通列表示。 这有助于避免格式化过程中不必要的数据复制。

allow_unrestricted_reads_from_keeper

允许从 system.zookeeper 表进行不受限制的读取 (即不对 path 作条件限制) 。这可能会比较方便,但对 ZooKeeper 来说并不安全
最后修改于 2026年8月18日