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_correlated_subqueries
别名:allow_experimental_correlated_subqueries
允许执行关联子查询。
allow_create_index_without_type
允许执行不带 TYPE 的 CREATE INDEX 查询。该查询会被忽略。此设置用于 SQL 兼容性测试。allow_creating_set_partitions_independently
当子查询的MergeTree 表的分区表达式是子查询输出列的确定性函数时,启用在为 IN (subquery) 构建 Set 期间对该子查询结果按分区并行预去重。每个分区通过独立的 stream 读取并单独去重,因此唯一的 Set 填充转换仅会对唯一行计算哈希。此优化不适用于 FINAL、并行副本或 GLOBAL IN。仅当数据包含多个分区,且最大分区的行数不超过平均分区行数的两倍时,才会请求按分区读取 (参阅 force_creating_set_partitions_independently 以跳过数据倾斜检查) ;如果流已因其他按分区功能而被拆分,因而彼此不包含重叠分区 (例如按分区的 LIMIT BY) ,则无论如何都会执行预去重,因为读取布局已确定。构建 Set 期间,各 stream 的去重表合计会额外存储约一份唯一键副本。
allow_custom_error_code_in_throwif
在 throwIf() 函数中启用自定义错误代码。如果为 true,抛出的异常可能带有非预期的错误代码。allow_database_glue_catalog
别名:allow_experimental_database_glue_catalog
允许使用 catalog_type = 'glue' 的数据库引擎 DataLakeCatalog
Cloud 默认值:1。
allow_database_iceberg
别名:allow_experimental_database_iceberg
允许使用 catalog_type = 'iceberg' 的 数据库引擎 DataLakeCatalog
Cloud 默认值:1。
allow_database_unity_catalog
别名:allow_experimental_database_unity_catalog
允许使用 catalog_type = 'unity' 的 数据库引擎 DataLakeCatalog
Cloud default value: 1。
allow_ddl
如果设置为 true,则用户可以执行 DDL 查询。allow_delta_kernel_rs
别名:allow_experimental_delta_kernel_rs
允许使用 delta-kernel-rs 实现读取 Delta Lake 表。
allow_delta_lake_create_table
允许使用 delta-kernel-rs 创建新的 DeltaLake 表,或将已有表注册到 catalog 中。目前尚不支持创建分区表 (PARTITION BY) 。在 DataLakeCatalog 数据库中,表是按其 Delta schema 注册的,因此若声明的 ClickHouse 类型映射到范围更宽的 Delta 类型 (例如 UInt8 -> short、FixedString(N) -> string) ,读取时得到的是 Delta 映射后的类型,而非所声明的类型。
allow_delta_lake_writes
别名:allow_experimental_delta_lake_writes
启用 delta-kernel 写入功能。
allow_distinct_partitions_independently
当分区表达式是DISTINCT 列的确定性函数时,启用在独立线程中按分区计算 DISTINCT,从而跳过跨流合并。当分区数接近 CPU 核心数且各分区大小大致相同时,此设置会带来收益;否则,成本启发式策略会跳过此优化。请参阅 max_number_of_partitions_for_independent_distinct 和 force_distinct_partitions_independently。不适用于 FINAL 或并行副本。
设置 max_rows_in_distinct 或 max_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_executable_tables
允许通过executable 表函数以及从 Executable 和 ExecutablePool 表进行读取。
禁用该设置仅会拒绝读取操作:创建、附加、删除和查看此类表的结构仍然可用。已启动的 ExecutablePool 进程会继续运行,不会被终止,但在重新启用该设置之前,每次读取仍会被拒绝。
allow_execute_multiif_columnar
允许以列式方式执行 multiIf 函数allow_fuzz_query_functions
启用fuzzQuery 函数,该函数会对查询字符串进行随机 AST 变更。
allow_general_join_planning
允许使用一种更通用的 JOIN 规划算法,可处理更复杂的条件,但仅适用于 hash join。如果未启用 hash join,则无论此设置的值如何,都会使用常规的 JOIN 规划算法。allow_geo_types_in_iceberg
别名:allow_experimental_geo_types_in_iceberg
允许将 Iceberg 的 geometry 和 geography 字段类型解析为 ClickHouse 的 Geometry (Variant) 类型。
allow_get_client_http_header
允许使用函数getClientHTTPHeader,该函数可用于获取当前 HTTP 请求的请求头值。出于安全考虑,此功能默认未启用,因为某些请求头 (如 Cookie) 可能包含敏感信息。请注意,X-ClickHouse-*、Authentication 和 Authorization 请求头始终受限,无法通过此函数获取。
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_join_right_table_sorting
别名:allow_experimental_join_right_table_sorting
若设置为 true,且满足 join_to_sort_minimum_perkey_rows 与 join_to_sort_maximum_table_rows 的条件,则按 key 对右表重新排列,以提升 left 或 inner hash join 的性能。
allow_kafka_offsets_storage_in_keeper
别名:allow_experimental_kafka_offsets_storage_in_keeper
允许将 Kafka 相关的偏移量存储在 ClickHouse Keeper 中。启用后,可为 Kafka table engine 指定 ClickHouse Keeper path 和副本名称。此时将不再使用常规的 Kafka 引擎,而是改用一种新的 storage engine,主要把已提交偏移量存储在 ClickHouse Keeper 中
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 在处理一组不存在无损公共类型的数值参数时 (例如 Decimal 与 Float64,或 Int64 与 Float64) ,会将其解析为数值超类型 (Float64) ,而非报错,但可能损失精度。这样,结果便可直接用于 sum、avg、min 和 max 等合并值的聚合函数。此设置独立于 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_preliminary_distinct_abandoning
允许预先 (按流执行的)DISTINCT 在输入数据大多唯一时放弃去重,释放其哈希表并让其余行直接通过。预先 DISTINCT 在设计上是尽力而为的——即使执行去重,不同流中的重复项仍会通过——而最终 DISTINCT 会再次对其输出去重。因此,放弃预先去重几乎不会减少重复项的移除效果,却能节省存储第二份唯一键副本所需的内存和哈希计算。当预先 DISTINCT 带有 limit hint (即后续没有排序的普通 LIMIT) 时,不会应用此设置。
allow_rank_dense_rank_arguments
允许向RANK 和 DENSE_RANK 窗口函数传递参数,以保持向后兼容。
根据 SQL 标准,RANK 和 DENSE_RANK 不接受任何参数——它们仅根据
OVER (ORDER BY ...) 窗口对行进行排名。在 26.5 之前的 ClickHouse 版本中,类似
RANK(x) OVER (...) 的查询会静默接受并忽略该参数,这会导致用户困惑
(显式写出的参数看起来似乎会影响排名,但实际上并不会) 。
当此设置为 false (默认值) 时,RANK 和 DENSE_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 来说并不安全allow_url_wildcard_from_index_pages
别名:allow_experimental_url_wildcard_from_index_pages
允许 url() 和 ENGINE = URL 基于 HTTP 索引页面进行通配符展开。
allow_window_partitions_independently
当MergeTree 表的分区表达式是窗口 PARTITION BY 列的确定性函数时,启用在独立线程上按分区独立计算窗口函数。每个分区通过独立的 stream 读取,按照窗口排序描述分别排序,并由各自的窗口 转换 处理,从而跳过通常会在各线程间重新分发每一行的哈希分散。当分区数接近 CPU 核心数且各分区大小大致相同时,此设置效果较好;否则,成本启发式策略会跳过该优化。参见 max_number_of_partitions_for_independent_window 和 force_window_partitions_independently。不适用于 FINAL 或并行副本。