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_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

允许 MergeTree 主键和跳过索引对涉及 coalesceifNullWHERE/PREWHERE 谓词裁剪粒度。若不启用此设置,这类谓词对索引分析是透明的,无法进行裁剪,因此即使某些粒度不可能匹配,仍然会被读取。该设置只影响读取哪些粒度;查询结果不会改变,因为行仍会按原始谓词进行过滤。 在索引分析之前,会重写两种谓词形态:
  • 将针对 coalesce/ifNull 的比较 (例如 coalesce(a, b) = 5) 改写为析取形式,以便每个参数上的索引都能参与裁剪:a = 5 OR (a IS NULL AND b = 5),参数更多时也会按此方式扩展。
  • 将带有假值 (零) 常量默认值且直接用作条件的 coalesce/ifNull (例如 ifNull(a = 5, 0)coalesce(a = 5, 0)) 解包为其内部谓词 a = 5。这类包装会将内部谓词的三值结果收敛为确定的布尔值 (即将 NULL 映射为 false) 。

allow_limit_by_partitions_independently

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

allow_materialized_view_with_bad_select

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

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年7月24日