跳到主要内容
跳到主要内容

会话设置

以下所有设置也可以在表 system.settings 中找到。这些设置是从 source 自动生成的。

add_http_cors_header

类型: Bool

默认值: 0

写入添加 HTTP CORS 头。

additional_result_filter

类型: String

默认值:

要应用于 SELECT 查询结果的额外过滤表达式。 此设置不适用于任何子查询。

示例

additional_table_filters

类型: Map

默认值:

从指定表读取后应用的额外过滤表达式。

示例

aggregate_functions_null_for_empty

类型: Bool

默认值: 0

启用或禁用在查询中重写所有聚合函数,向它们添加 -OrNull 后缀。为 SQL 标准兼容性启用它。 通过查询重写来实现(类似于 count_distinct_implementation 设置),以获得分布式查询的一致结果。

可能值:

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

示例

考虑以下带有聚合函数的查询:

aggregate_functions_null_for_empty = 0 时,它将生成:

aggregate_functions_null_for_empty = 1 时,结果将是:

aggregation_in_order_max_block_bytes

类型: UInt64

默认值: 50000000

在按主键的顺序聚合期间累积的块的最大大小(以字节为单位)。较小的块大小允许更多的最终合并阶段并行化聚合。

aggregation_memory_efficient_merge_threads

类型: UInt64

默认值: 0

用于在内存高效模式下合并中间聚合结果的线程数。增加时,消耗更多内存。0 意味着——与 'max_threads' 相同。

allow_aggregate_partitions_independently

类型: Bool

默认值: 0

当分区键适合分组键时,启用在单独线程上独立聚合分区。当分区数量接近核心数量并且分区大小大致相同时,有利于此设置。

allow_archive_path_syntax

Experimental feature. Learn more.

类型: Bool

默认值: 1

文件/S3 引擎/表函数将解析带有 '::' 的路径为 <archive> :: <file>\,如果归档具有正确的扩展名。

allow_asynchronous_read_from_io_pool_for_merge_tree

类型: Bool

默认值: 0

使用后台 I/O 池从 MergeTree 表读取。此设置可能会提高 I/O 密集型查询的性能。

allow_changing_replica_until_first_data_packet

类型: Bool

默认值: 0

如果启用,在冗余请求中,我们可以在接收第一个数据包之前开始新连接,即使我们已经取得了一些进展(但进展在 receive_data_timeout 超时内未更新),否则在第一次取得进展后,我们禁用更改副本。

allow_create_index_without_type

类型: Bool

默认值: 0

允许 CREATE INDEX 查询不带 TYPE。该查询将被忽略。为 SQL 兼容性测试而设置。

allow_custom_error_code_in_throwif

类型: Bool

默认值: 0

启用 throwIf() 函数中的自定义错误代码。如果为 true,抛出的异常可能具有意外的错误代码。

allow_ddl

类型: Bool

默认值: 1

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

allow_deprecated_database_ordinary

类型: Bool

默认值: 0

允许使用过时的普通引擎创建数据库。

allow_deprecated_error_prone_window_functions

类型: Bool

默认值: 0

允许使用过时的易出错窗口函数(neighbor, runningAccumulate, runningDifferenceStartingWithFirstValue, runningDifference)。

allow_deprecated_snowflake_conversion_functions

类型: Bool

默认值: 0

函数 snowflakeToDateTimesnowflakeToDateTime64dateTimeToSnowflakedateTime64ToSnowflake 被弃用并默认禁用。 请使用函数 snowflakeIDToDateTimesnowflakeIDToDateTime64dateTimeToSnowflakeIDdateTime64ToSnowflakeID 代替。

要重新启用被弃用的函数(例如,在过渡期间),请将此设置设为 true

allow_deprecated_syntax_for_merge_tree

类型: Bool

默认值: 0

允许使用已弃用的引擎定义语法创建 *MergeTree 表。

allow_distributed_ddl

类型: Bool

默认值: 1

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

allow_drop_detached

类型: Bool

默认值: 0

允许 ALTER TABLE ... DROP DETACHED PART[ITION] ... 查询。

allow_execute_multiif_columnar

类型: Bool

默认值: 1

允许以列式执行 multiIf 函数。

allow_experimental_analyzer

类型: Bool

默认值: 1

允许新的查询分析器。

allow_experimental_codecs

Experimental feature. Learn more.

类型: Bool

默认值: 0

如果设置为 true,允许指定实验性压缩编解码器(但我们还没有这些功能,此选项不执行任何操作)。

allow_experimental_database_iceberg

Experimental feature. Learn more.

类型: Bool

默认值: 0

允许实验性数据库引擎 Iceberg。

allow_experimental_database_materialized_postgresql

Experimental feature. Learn more.

类型: Bool

默认值: 0

允许创建 Engine=MaterializedPostgreSQL(...) 的数据库。

allow_experimental_dynamic_type

Beta feature. Learn more.

类型: Bool

默认值: 0

允许创建 Dynamic 数据类型。

allow_experimental_full_text_index

Experimental feature. Learn more.

类型: Bool

默认值: 0

如果设置为 true,允许使用实验性全文索引。

allow_experimental_funnel_functions

Experimental feature. Learn more.

类型: Bool

默认值: 0

启用实验性漏斗分析功能。

allow_experimental_hash_functions

Experimental feature. Learn more.

类型: Bool

默认值: 0

启用实验性哈希函数。

allow_experimental_inverted_index

Experimental feature. Learn more.

类型: Bool

默认值: 0

如果设置为 true,允许使用实验性倒排索引。

allow_experimental_join_condition

Experimental feature. Learn more.

类型: Bool

默认值: 0

支持涉及左右两表列的非等条件连接。例如 t1.y < t2.y

allow_experimental_join_right_table_sorting

Experimental feature. Learn more.

类型: Bool

默认值: 0

如果设置为 true,并且满足 join_to_sort_minimum_perkey_rowsjoin_to_sort_maximum_table_rows 的条件,则通过键对右表进行重新排序,以提高左连接或内部哈希连接的性能。

allow_experimental_json_type

Beta feature. Learn more.

类型: Bool

默认值: 0

允许创建 JSON 数据类型。

allow_experimental_kafka_offsets_storage_in_keeper

Experimental feature. Learn more.

类型: Bool

默认值: 0

允许实验性功能将 Kafka 相关偏移存储在 ClickHouse Keeper 中。启用后,可以将 ClickHouse Keeper 路径和副本名称指定给 Kafka 表引擎。因此,与常规 Kafka 引擎不同,将使用一种新类型的存储引擎,主要将已提交的偏移存储在 ClickHouse Keeper 中。

allow_experimental_kusto_dialect

Experimental feature. Learn more.

类型: Bool

默认值: 0

启用 Kusto 查询语言 (KQL) - SQL 的替代方案。

allow_experimental_live_view

Experimental feature. Learn more.

类型: Bool

默认值: 0

允许创建弃用的实时视图。

可能值:

  • 0 — 禁用实时视图的工作。
  • 1 — 启用实时视图的工作。

allow_experimental_materialized_postgresql_table

Experimental feature. Learn more.

类型: Bool

默认值: 0

允许使用 MaterializedPostgreSQL 表引擎。默认禁用,因为此功能是实验性的。

allow_experimental_nlp_functions

Experimental feature. Learn more.

类型: Bool

默认值: 0

启用实验性自然语言处理功能。

allow_experimental_object_type

Experimental feature. Learn more.

类型: Bool

默认值: 0

允许过时的对象数据类型。

allow_experimental_parallel_reading_from_replicas

Beta feature. Learn more.

类型: UInt64

默认值: 0

在执行 SELECT 查询时,从每个分片使用多达 max_parallel_replicas 的副本。读取通过协调动态并行化。0 - 禁用,1 - 启用,失败时默默禁用,2 - 启用,失败时抛出异常。

allow_experimental_prql_dialect

Experimental feature. Learn more.

类型: Bool

默认值: 0

启用 PRQL - SQL 的替代方案。

allow_experimental_query_deduplication

Experimental feature. Learn more.

类型: Bool

默认值: 0

基于部分 UUID 的 SELECT 查询实验性去重。

allow_experimental_shared_set_join

Experimental feature. Learn more.
ClickHouse Cloud only

类型: Bool

默认值: 0

仅在 ClickHouse Cloud 中有效。允许创建 ShareSet 和 SharedJoin。

allow_experimental_statistics

Experimental feature. Learn more.

类型: Bool

默认值: 0

允许定义带有 统计信息 的列,并且 操作统计信息

allow_experimental_time_series_table

Experimental feature. Learn more.

类型: Bool

默认值: 0

允许创建带有 TimeSeries 表引擎的表。

可能值:

allow_experimental_ts_to_grid_aggregate_function

Experimental feature. Learn more.

类型: Bool

默认值: 0

实验性 tsToGrid 聚合函数,用于类似于 Prometheus 的时间序列重采样。仅在云中可用。

allow_experimental_variant_type

Beta feature. Learn more.

类型: Bool

默认值: 0

允许创建 Variant 数据类型。

allow_experimental_vector_similarity_index

Experimental feature. Learn more.

类型: Bool

默认值: 0

允许实验性向量相似性索引。

allow_experimental_window_view

Experimental feature. Learn more.

类型: Bool

默认值: 0

启用窗口视图。还不够成熟。

allow_general_join_planning

类型: Bool

默认值: 1

允许更通用的连接规划算法,可以处理更复杂的条件,但仅适用于哈希连接。如果哈希连接未启用,则使用常规连接规划算法,而不管此设置的值如何。

allow_get_client_http_header

类型: Bool

默认值: 0

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

allow_hyperscan

类型: Bool

默认值: 1

允许使用 Hyperscan 库的函数。禁用以避免潜在的长时间编译和过度资源使用。

allow_introspection_functions

类型: Bool

默认值: 0

启用或禁用用于查询分析的 自我检查函数

可能值:

  • 1 — 启用自我检查函数。
  • 0 — 禁用自我检查函数。

另请参阅

allow_materialized_view_with_bad_select

类型: Bool

默认值: 1

允许使用引用不存在的表或列的 SELECT 查询创建物化视图。它仍然必须在语法上有效。不适用于可刷新的物化视图。如果 MV 模式必须从 SELECT 查询推断(即,如果 CREATE 没有列列表且没有 TO 表)。可用于在其源表之前创建 MV。

allow_named_collection_override_by_default

类型: Bool

默认值: 1

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

allow_non_metadata_alters

类型: Bool

默认值: 1

允许执行不仅影响表元数据,还影响磁盘上数据的修改。

allow_nonconst_timezone_arguments

类型: Bool

默认值: 0

在某些时间相关函数中允许非常量时区参数,例如 toTimeZone()、fromUnixTimestamp*()、snowflakeToDateTime*()。

allow_nondeterministic_mutations

类型: Bool

默认值: 0

用户级设置,允许在复制表上使用非确定性函数进行变更,例如 dictGet

例如,字典可能在节点之间不同步,因此默认情况下不允许通过它们拉取值的变更在复制表上进行。启用此设置允许这种行为,使用户有责任确保所使用的数据在所有节点之间保持同步。

示例

allow_nondeterministic_optimize_skip_unused_shards

类型: Bool

默认值: 0

允许在分片键中使用非确定性功能(如 randdictGet,因为后者在更新时存在一些注意事项)。

可能值:

  • 0 — 不允许。
  • 1 — 允许。

allow_not_comparable_types_in_comparison_functions

类型: Bool

默认值: 0

允许或限制在比较函数 equal/less/greater/etc 中使用不可比较的类型(如 JSON/Object/AggregateFunction)。

allow_not_comparable_types_in_order_by

类型: Bool

默认值: 0

允许或限制在 ORDER BY 键中使用不可比较的类型(如 JSON/Object/AggregateFunction)。

allow_prefetched_read_pool_for_local_filesystem

类型: Bool

默认值: 0

如果所有部分都在本地文件系统中,则优先使用预取的线程池。

allow_prefetched_read_pool_for_remote_filesystem

类型: Bool

默认值: 1

如果所有部分都在远程文件系统中,则优先使用预取的线程池。

allow_push_predicate_ast_for_distributed_subqueries

类型: Bool

默认值: 1

允许在启用分析器的分布式子查询的 AST 级别推动谓词。

allow_push_predicate_when_subquery_contains_with

类型: Bool

默认值: 1

允许在子查询包含 WITH 子句时推动谓词。

allow_reorder_prewhere_conditions

类型: Bool

默认值: 1

在将条件从 WHERE 移动到 PREWHERE 时,允许重新排序以优化过滤。

allow_settings_after_format_in_insert

类型: Bool

默认值: 0

控制是否允许在 INSERT 查询中的 FORMAT 后使用 SETTINGS。不建议使用此功能,因为这可能将部分 SETTINGS 解释为值。

示例:

但是,以下查询仅在 allow_settings_after_format_in_insert 为 true 时会生效:

可能值:

  • 0 — 禁止。
  • 1 — 允许。
备注

仅在后向兼容性情况下使用此设置,如果您的用例依赖于旧语法。

allow_simdjson

类型: Bool

默认值: 1

允许在 'JSON*' 函数中使用 simdjson 库(如果 AVX2 指令可用)。如果禁用,将使用 rapidjson。

allow_statistics_optimize

Experimental feature. Learn more.

类型: Bool

默认值: 0

允许使用统计信息来优化查询。

allow_suspicious_codecs

类型: Bool

默认值: 0

如果设置为 true,允许指定无意义的压缩编解码器。

allow_suspicious_fixed_string_types

类型: Bool

默认值: 0

在 CREATE TABLE 语句中,允许创建类型为 FixedString(n) 且 n > 256 的列。长度 >= 256 的 FixedString 可能会引起怀疑,并且很可能表示误用。

allow_suspicious_indices

类型: Bool

默认值: 0

拒绝具有相同表达式的主/次索引和排序键。

allow_suspicious_low_cardinality_types

类型: Bool

默认值: 0

允许或限制在固定大小为 8 字节或更小的数据类型中使用 LowCardinality:数值数据类型和 FixedString(8_bytes_or_less)

对于使用小的固定值,使用 LowCardinality 通常效率不高,因为 ClickHouse 为每一行存储一个数值索引。结果:

  • 磁盘空间使用量可能增加。
  • 内存消耗可能更高,具体取决于字典大小。
  • 由于额外的编码/解码操作,某些函数可能运行更慢。

MergeTree 引擎表中的合并时间可能因上述所有原因而增加。

可能值:

  • 1 — 不限制使用 LowCardinality
  • 0 — 限制使用 LowCardinality

allow_suspicious_primary_key

类型: Bool

默认值: 0

允许可疑的 PRIMARY KEY/ORDER BY 用于 MergeTree(即 SimpleAggregateFunction)。

allow_suspicious_ttl_expressions

类型: Bool

默认值: 0

拒绝不依赖于任何表列的 TTL 表达式。这通常表示用户错误。

allow_suspicious_types_in_group_by

类型: Bool

默认值: 0

允许或限制在 GROUP BY 键中使用 VariantDynamic 类型。

allow_suspicious_types_in_order_by

类型: Bool

默认值: 0

允许或限制在 ORDER BY 键中使用 VariantDynamic 类型。

allow_suspicious_variant_types

类型: Bool

默认值: 0

在 CREATE TABLE 语句中,允许指定具有相似变体类型的 Variant 类型(例如,具有不同的数值或日期类型)。启用此设置可能在处理具有相似类型的值时引入一些歧义。

allow_unrestricted_reads_from_keeper

类型: Bool

默认值: 0

允许从 system.zookeeper 表中进行不受限制(没有条件路径)的读取,可能很方便,但对 zookeeper 而言不安全。

alter_move_to_space_execute_async

类型: Bool

默认值: 0

异步执行 ALTER TABLE MOVE ... TO [DISK|VOLUME]。

alter_partition_verbose_result

类型: Bool

默认值: 0

启用或禁用显示对分区和部分成功应用操作的信息。 适用于 ATTACH PARTITION|PARTFREEZE PARTITION

可能值:

  • 0 — 禁用详细信息。
  • 1 — 启用详细信息。

示例

alter_sync

类型: UInt64

默认值: 1

允许通过 ALTEROPTIMIZETRUNCATE 查询设置等待在副本上执行操作。

可能值:

  • 0 — 不等待。
  • 1 — 等待自身执行。
  • 2 — 等待所有人。

云默认值: 0

备注

alter_sync 仅适用于 Replicated 表,对非 Replicated 表的更改无效。

analyze_index_with_space_filling_curves

类型: Bool

默认值: 1

如果表的索引中具有空间填充曲线,例如 ORDER BY mortonEncode(x, y)ORDER BY hilbertEncode(x, y),并且查询在其参数上有条件,例如 x >= 10 AND x <= 20 AND y >= 20 AND y <= 30,则使用空间填充曲线进行索引分析。

analyzer_compatibility_join_using_top_level_identifier

类型: Bool

默认值: 0

强制在 JOIN USING 中从投影解决标识符(例如,在 SELECT a + 1 AS b FROM t1 JOIN t2 USING (b) 中,连接将通过 t1.a + 1 = t2.b 执行,而不是 t1.b = t2.b)。

any_join_distinct_right_table_keys

类型: Bool

默认值: 0

ANY INNER|LEFT JOIN 操作中启用传统的 ClickHouse 服务器行为。

备注

仅在您的用例依赖于传统 JOIN 行为时使用此设置。

启用传统行为时:

  • t1 ANY LEFT JOIN t2t2 ANY RIGHT JOIN t1 操作的结果不相等,因为 ClickHouse 使用的是从左到右的表键映射逻辑。
  • ANY INNER JOIN 操作的结果包含来自左表的所有行,类似于 SEMI LEFT JOIN 操作。

禁用传统行为时:

  • t1 ANY LEFT JOIN t2t2 ANY RIGHT JOIN t1 操作的结果相等,因为 ClickHouse 使用的是提供一次对多键映射的逻辑。
  • ANY INNER JOIN 操作的结果包含来自左表和右表的每个键的一行。

可能值:

  • 0 — 传统行为禁用。
  • 1 — 传统行为启用。

另请参阅:

apply_deleted_mask

类型: Bool

默认值: 1

启用通过轻量级删除删除的行过滤。如果禁用,则查询将能够读取这些行。这对于调试和 "恢复删除" 场景很有用。

apply_mutations_on_fly

类型: Bool

默认值: 0

如果为 true,未在数据部分中物化的变更(UPDATE 和 DELETE)将在 SELECT 时应用。

apply_settings_from_server

类型: Bool

默认值: 1

客户端是否应接受来自服务器的设置。

这仅影响在客户端执行的操作,特别是在解析 INSERT 输入数据和格式化查询结果时。大多数查询执行发生在服务器上,并不受此设置的影响。

通常,此设置应在用户配置文件中设置(users.xml 或 ALTER USER 等查询),而不是通过客户端(客户端命令行参数、SET 查询或 SELECT 查询的 SETTINGS 部分)。通过客户端可以将其更改为 false,但不能更改为 true(因为如果用户配置文件具有 apply_settings_from_server = false,则服务器不会发送设置)。

请注意,最初(24.12)存在一个服务器设置(send_settings_to_client),但随后它被替换为此客户端设置,以提高可用性。

asterisk_include_alias_columns

类型: Bool

默认值: 0

为通配符查询 (SELECT *) 包含 ALIAS 列。

可能值:

  • 0 - 禁用
  • 1 - 启用

asterisk_include_materialized_columns

类型: Bool

默认值: 0

为通配符查询 (SELECT *) 包含 MATERIALIZED 列。

可能值:

  • 0 - 禁用
  • 1 - 启用

async_insert

类型: Bool

默认值: 0

如果为 true,来自 INSERT 查询的数据将存储在队列中,稍后在后台刷新到表中。如果 wait_for_async_insert 为 false,INSERT 查询几乎立即处理,而客户端将等待数据刷新到表中。

async_insert_busy_timeout_decrease_rate

类型: Double

默认值: 0.2

自适应异步插入超时降低的指数增长率。

async_insert_busy_timeout_increase_rate {#async_insert_busy_timeout_increase_rate

类型: Double

默认值: 0.2

自适应异步插入超时增加的指数增长率。

async_insert_busy_timeout_max_ms

类型:毫秒

默认值:200

在第一次数据出现后,每个查询收集的数据转储之前的最大等待时间。

async_insert_busy_timeout_min_ms

类型:毫秒

默认值:50

如果通过 async_insert_use_adaptive_busy_timeout 启用了自动调整,则在第一次数据出现后,每个查询收集的数据转储之前的最小等待时间。它还作为自适应算法的初始值。

async_insert_deduplicate

类型:布尔值

默认值:0

对于复制表中的异步 INSERT 查询,指定应执行插入块的去重。

async_insert_max_data_size

类型:UInt64

默认值:10485760

在插入之前,每个查询收集的未解析数据的最大字节数。

async_insert_max_query_number

类型:UInt64

默认值:450

在插入之前的最大插入查询数量。

async_insert_poll_timeout_ms

类型:毫秒

默认值:10

从异步插入队列轮询数据的超时时间。

async_insert_use_adaptive_busy_timeout

类型:布尔值

默认值:1

如果设置为 true,则使用自适应忙碌超时进行异步插入。

async_query_sending_for_remote

类型:布尔值

默认值:1

在执行远程查询时启用异步连接创建和查询发送。

默认情况下启用。

async_socket_for_remote

类型:布尔值

默认值:1

在执行远程查询时启用从套接字异步读取。

默认情况下启用。

azure_allow_parallel_part_upload

类型:布尔值

默认值:1

对 Azure 多部分上传使用多个线程。

azure_check_objects_after_upload

类型:布尔值

默认值:0

检查在 Azure Blob 存储中每个上传对象,以确保上传成功。

azure_create_new_file_on_insert

类型:布尔值

默认值:0

启用或禁用在 Azure 引擎表中每次插入时创建新文件。

azure_ignore_file_doesnt_exist

类型:布尔值

默认值:0

当读取某些键时,如果文件不存在,则忽略文件的缺失。

可能的值:

  • 1 — SELECT 返回空结果。
  • 0 — SELECT 抛出异常。

azure_list_object_keys_size

类型:UInt64

默认值:1000

ListObject 请求中可批量返回的最大文件数量。

azure_max_blocks_in_multipart_upload

类型:UInt64

默认值:50000

Azure 多部分上传中的最大块数。

azure_max_inflight_parts_for_one_file

类型:UInt64

默认值:20

多部分上传请求中并行加载的最大块数量。0 表示无限制。

azure_max_single_part_copy_size

类型:UInt64

默认值:268435456

使用单个部分复制到 Azure Blob 存储的对象的最大大小。

azure_max_single_part_upload_size

类型:UInt64

默认值:104857600

使用单个部分上传到 Azure Blob 存储的对象的最大大小。

azure_max_single_read_retries

类型:UInt64

默认值:4

在单次 Azure Blob 存储读取期间的最大重试次数。

azure_max_unexpected_write_error_retries

类型:UInt64

默认值:4

在 Azure Blob 存储写入期间出现意外错误时的最大重试次数。

azure_max_upload_part_size

类型:UInt64

默认值:5368709120

在 Azure Blob 存储中进行多部分上传期间要上传的部分的最大大小。

azure_min_upload_part_size

类型:UInt64

默认值:16777216

在 Azure Blob 存储中进行多部分上传期间要上传的部分的最小大小。

azure_sdk_max_retries

类型:UInt64

默认值:10

在 Azure SDK 中的最大重试次数。

azure_sdk_retry_initial_backoff_ms

类型:UInt64

默认值:10

在 Azure SDK 中重试之间的最小回退时间。

azure_sdk_retry_max_backoff_ms

类型:UInt64

默认值:1000

在 Azure SDK 中重试之间的最大回退时间。

azure_skip_empty_files

类型:布尔值

默认值:0

启用或禁用在 S3 引擎中跳过空文件。

可能的值:

  • 0 — 如果空文件与请求格式不兼容,SELECT 将抛出异常。
  • 1 — 空文件返回空结果。

azure_strict_upload_part_size

类型:UInt64

默认值:0

在 Azure Blob 存储中进行多部分上传期间要上传的部分的确切大小。

azure_throw_on_zero_files_match

类型:布尔值

默认值:0

如果根据通配符扩展规则匹配到零个文件,则抛出错误。

可能的值:

  • 1 — SELECT 抛出异常。
  • 0 — SELECT 返回空结果。

azure_truncate_on_insert

类型:布尔值

默认值:0

启用或禁用在 Azure 引擎表中的插入之前截断。

azure_upload_part_size_multiply_factor

类型:UInt64

默认值:2

在从 Azure Blob 存储的单次写入中上传azure_multiply_parts_count_threshold的部分数量时,每次将 azure_min_upload_part_size 乘以此因子。

azure_upload_part_size_multiply_parts_count_threshold

类型:UInt64

默认值:500

每当此数量的部分被上传到 Azure Blob 存储时,azure_min_upload_part_size 乘以 azure_upload_part_size_multiply_factor。

backup_restore_batch_size_for_keeper_multi

类型:UInt64

默认值:1000

备份或恢复期间对 [Zoo]Keeper 的多请求的最大批大小。

backup_restore_batch_size_for_keeper_multiread

类型:UInt64

默认值:10000

备份或恢复期间对 [Zoo]Keeper 的多读取请求的最大批大小。

backup_restore_failure_after_host_disconnected_for_seconds

类型:UInt64

默认值:3600

如果在进行 BACKUP ON CLUSTER 或 RESTORE ON CLUSTER 操作期间,主机在此时间量内没有在 ZooKeeper 中重新创建其临时的“存活”节点,则整个备份或恢复被视为失败。 此值应大于主机在失败后重新连接到 ZooKeeper 的合理时间。 零表示无限制。

backup_restore_finish_timeout_after_error_sec

类型:UInt64

默认值:180

发起者应等待多长时间,以便其他主机对“错误”节点做出反应并停止当前的 BACKUP ON CLUSTER 或 RESTORE ON CLUSTER 操作的工作。

backup_restore_keeper_fault_injection_probability

类型:浮点数

默认值:0

备份或恢复期间 keeper 请求失败的近似概率。有效值在区间 [0.0f, 1.0f] 内。

backup_restore_keeper_fault_injection_seed

类型:UInt64

默认值:0

0 - 随机种子,其他值为设置值。

backup_restore_keeper_max_retries

类型:UInt64

默认值:1000

在 BACKUP 或 RESTORE 操作中进行的 [Zoo]Keeper 操作的最高重试次数。 应足够大,以便整个操作在临时的 [Zoo]Keeper 故障期间不会失败。

backup_restore_keeper_max_retries_while_handling_error

类型:UInt64

默认值:20

在处理 BACKUP ON CLUSTER 或 RESTORE ON CLUSTER 操作的错误期间,进行的 [Zoo]Keeper 操作的最大重试次数。

backup_restore_keeper_max_retries_while_initializing

类型:UInt64

默认值:20

在初始化 BACKUP ON CLUSTER 或 RESTORE ON CLUSTER 操作期间,进行的 [Zoo]Keeper 操作的最大重试次数。

backup_restore_keeper_retry_initial_backoff_ms

类型:UInt64

默认值:100

在备份或恢复期间进行的 [Zoo]Keeper 操作的初始回退超时时间。

backup_restore_keeper_retry_max_backoff_ms

类型:UInt64

默认值:5000

在备份或恢复期间进行的 [Zoo]Keeper 操作的最大回退超时时间。

backup_restore_keeper_value_max_size

类型:UInt64

默认值:1048576

备份期间 [Zoo]Keeper 节点的数据的最大大小。

backup_restore_s3_retry_attempts

类型:UInt64

默认值:1000

针对 Aws::Client::RetryStrategy 的设置,Aws::Client 本身会重试,0 表示没有重试。仅适用于备份/恢复。

cache_warmer_threads

ClickHouse Cloud only

类型:UInt64

默认值:4

仅在 ClickHouse Cloud 中生效。用于在启用 cache_populated_by_fetch 时,后台线程的数量,用于推测性地下载新数据部分到文件缓存中。设置为零以禁用。

calculate_text_stack_trace

类型:布尔值

默认值:1

在查询执行期间发生异常时计算文本堆栈跟踪。这是默认值。它需要符号查找,当执行大量错误查询时,可能会减慢模糊测试。在正常情况下,不应禁用此选项。

cancel_http_readonly_queries_on_client_close

类型:布尔值

默认值:0

当客户端在不等待响应的情况下关闭连接时,取消 HTTP 只读查询(例如 SELECT)。

云的默认值为:1

cast_ipv4_ipv6_default_on_conversion_error

类型:布尔值

默认值:0

在转换错误时,CAST 运算符转换为 IPv4、转换为 IPV6 类型,toIPv4、toIPv6 函数将返回默认值,而不是抛出异常。

cast_keep_nullable

类型:布尔值

默认值:0

CAST 操作中启用或禁用保留 Nullable 数据类型。

当设置为启用时,如果 CAST 函数的参数为 Nullable,结果也将转换为 Nullable 类型。当设置为禁用时,结果始终严格具有目标类型。

可能的值:

  • 0 — CAST 结果具有指定的确切目标类型。
  • 1 — 如果参数类型为 Nullable,则 CAST 结果转换为 Nullable(DestinationDataType)

示例

以下查询的结果为目标数据类型:

结果:

以下查询的结果为目标数据类型的 Nullable 修改:

结果:

另请参见

cast_string_to_dynamic_use_inference

类型:布尔值

默认值:0

在字符串到动态转换期间使用类型推断。

check_query_single_value_result

类型:布尔值

默认值:1

定义 MergeTree 家族引擎的 CHECK TABLE 查询结果的详细级别。

可能的值:

  • 0 — 查询显示表中每个单独数据部分的检查状态。
  • 1 — 查询显示一般的表检查状态。

check_referential_table_dependencies

类型:布尔值

默认值:0

检查DDL查询(例如 DROP TABLE 或 RENAME)不会破坏引用依赖关系。

check_table_dependencies

类型:布尔值

默认值:1

检查DDL查询(例如 DROP TABLE 或 RENAME)不会破坏依赖关系。

checksum_on_read

类型:布尔值

默认值:1

读取时验证校验和。默认情况下启用,并且应始终在生产环境中启用。请不要期望禁用此设置会带来任何好处。它只能用于实验和基准测试。该设置仅适用于 MergeTree 家族的表。对于其他表引擎以及通过网络接收的数据,总是会验证校验和。

cloud_mode

类型:布尔值

默认值:0

云模式。

cloud_mode_database_engine

类型:UInt64

默认值:1

云中允许的数据库引擎。1 - 重写 DDL 使用 Replicated 数据库,2 - 重写 DDL 使用 Shared 数据库。

cloud_mode_engine

类型:UInt64

默认值:1

云中允许的引擎系列。

  • 0 - 允许所有。
  • 1 - 重写 DDL 使用 *ReplicatedMergeTree。
  • 2 - 重写 DDL 使用 SharedMergeTree。
  • 3 - 重写 DDL 使用 SharedMergeTree,除非显式指定远程磁盘。

UInt64 最小化公共部分。

cluster_for_parallel_replicas

Beta feature. Learn more.

类型:字符串

默认值:

当前服务器所在分片的集群。

collect_hash_table_stats_during_aggregation

类型:布尔值

默认值:1

启用收集哈希表统计信息以优化内存分配。

collect_hash_table_stats_during_joins

类型:布尔值

默认值:1

启用收集哈希表统计信息以优化内存分配。

compatibility

类型:字符串

默认值:

compatibility 设置使 ClickHouse 使用之前版本的 ClickHouse 的默认设置,之前版本作为设置提供。

如果设置为非默认值,则会遵循那些设置(只有未修改的设置会受到 compatibility 设置的影响)。

此设置需要一个 ClickHouse 版本号作为字符串,例如 22.322.8。空值意味着该设置被禁用。

默认情况下禁用。

备注

在 ClickHouse Cloud 中,兼容性设置必须由 ClickHouse Cloud 支持设置。请 打开一个案例 以设置它。

compatibility_ignore_auto_increment_in_create_table

类型:布尔值

默认值:0

如果为 true,则在列声明中忽略 AUTO_INCREMENT 关键字,否则返回错误。这简化了从 MySQL 的迁移。

compatibility_ignore_collation_in_create_table

类型:布尔值

默认值:1

兼容性忽略创建表中的排序规则。

compile_aggregate_expressions

类型:布尔值

默认值:1

启用或禁用聚合函数的 JIT 编译为本机代码。启用此设置可以提高性能。

可能的值:

  • 0 — 无 JIT 编译进行聚合。
  • 1 — 使用 JIT 编译进行聚合。

另请参见

compile_expressions

类型:布尔值

默认值:0

将某些标量函数和运算符编译为本机代码。由于 LLVM 编译器基础设施中的错误,在 AArch64 机器上已知会导致 nullptr 解引用,从而导致服务器崩溃。请不要启用此设置。

compile_sort_description

类型:布尔值

默认值:1

将排序描述编译为本机代码。

connect_timeout

类型:秒

默认值:10

如果没有副本,则为连接超时时间。

connect_timeout_with_failover_ms

类型:毫秒

默认值:1000

对于分布式表引擎,在集群定义中使用“shard”和“replica”部分时,连接到远程服务器的超时时间(以毫秒为单位)。如果不成功,将尝试多次与不同副本建立连接。

connect_timeout_with_failover_secure_ms

类型:毫秒

默认值:1000

选择第一个健康副本的超时时间(适用于安全连接)。

connection_pool_max_wait_ms

类型:毫秒

默认值:0

连接池满时连接的等待时间(以毫秒为单位)。

可能的值:

  • 正整数。
  • 0 — 无限超时。

connections_with_failover_max_tries

类型:UInt64

默认值:3

对于分布式表引擎,每个副本的最大连接尝试次数。

convert_query_to_cnf

类型:布尔值

默认值:0

设置为 true 时,SELECT 查询将转换为合取范式(CNF)。在某些情况下,使用 CNF 重写查询可能会更快执行(查看此 Github 问题 进行解释)。

例如,注意以下 SELECT 查询未被修改(默认行为):

结果是:

让我们将 convert_query_to_cnf 设置为 true,看看会发生什么变化:

注意,WHERE 子句被重写为 CNF,但结果集是相同的 - 布尔逻辑不变:

可能的值:true, false

count_distinct_implementation

类型:字符串

默认值:uniqExact

指定应使用哪个 uniq* 函数来执行 COUNT(DISTINCT ...) 结构。

可能的值:

count_distinct_optimization

类型:布尔值

默认值:0

重写计数去重为分组子查询。

create_if_not_exists

类型:布尔值

默认值:0

默认为 CREATE 语句启用 IF NOT EXISTS。如果指定了此设置或 IF NOT EXISTS 并且已存在提供的名称的表,则不会抛出异常。

create_index_ignore_unique

类型:布尔值

默认值:0

在创建唯一索引时忽略 UNIQUE 关键字。用于 SQL 兼容性测试。

create_replicated_merge_tree_fault_injection_probability

类型:浮点数

默认值:0

创建表时在 ZooKeeper 中创建元数据后进行故障注入的概率。

create_table_empty_primary_key_by_default

类型:布尔值

默认值:0

允许在没有指定 ORDER BY 和 PRIMARY KEY 时创建 *MergeTree 表的空主键。

cross_join_min_bytes_to_compress

类型:UInt64

默认值:1073741824

在 CROSS JOIN 中进行压缩的块的最小大小。零值表示 - 禁用此阈值。当达到两个阈值之一(按行数或字节数)时压缩此块。

cross_join_min_rows_to_compress

类型:UInt64

默认值:10000000

在 CROSS JOIN 中压缩块的最小行数。零值表示 - 禁用此阈值。当达到两个阈值之一(按行数或字节数)时压缩此块。

data_type_default_nullable

类型:布尔值

默认值:0

允许没有显式修饰符 NULL 或 NOT NULL 的数据类型在列定义中是 Nullable

可能的值:

  • 1 — 列定义中的数据类型默认设置为 Nullable
  • 0 — 列定义中的数据类型默认设置为不 Nullable

database_atomic_wait_for_drop_and_detach_synchronously

类型:布尔值

默认值:0

为所有 DROPDETACH 查询添加修饰符 SYNC

可能的值:

  • 0 — 查询将延迟执行。
  • 1 — 查询将立即执行。

database_replicated_allow_explicit_uuid

类型:UInt64

默认值:0

0 - 不允许显式指定告诉副本的 UUID,1 - 允许,2 - 允许,但忽略指定的 UUID,并生成一个随机的 UUID。

database_replicated_allow_heavy_create

类型:布尔值

默认值:0

允许在复制数据库引擎中使用长时间运行的 DDL 查询(CREATE AS SELECT 和 POPULATE)。注意,这可能会长时间阻塞 DDL 队列。

database_replicated_allow_only_replicated_engine

类型:布尔值

默认值:0

允许在使用 Replicated 引擎的数据库中仅创建 Replicated 表。

database_replicated_allow_replicated_engine_arguments

类型:UInt64

默认值:0

0 - 不允许显式指定 ZooKeeper 路径和副本名称在 Replicated 数据库中的 *MergeTree 表中。1 - 允许。2 - 允许,但忽略指定的路径并使用默认路径。3 - 允许且不记录警告。

database_replicated_always_detach_permanently

类型:布尔值

默认值:0

如果数据库引擎为 Replicated,则执行 DETACH TABLE 作为 DETACH TABLE PERMANENTLY。

database_replicated_enforce_synchronous_settings

类型:布尔值

默认值:0

强制执行某些查询的同步等待(另请参阅 database_atomic_wait_for_drop_and_detach_synchronously、mutation_sync、alter_sync)。不建议启用这些设置。

database_replicated_initial_query_timeout_sec

类型:UInt64

默认值:300

设置初始 DDL 查询等待 Replicated 数据库处理之前 DDL 队列条目的时间(以秒为单位)。

可能的值:

  • 正整数。
  • 0 — 无限制。

decimal_check_overflow

类型:布尔值

默认值:1

检查十进制算术/比较操作的溢出。

deduplicate_blocks_in_dependent_materialized_views

类型:布尔值

默认值:0

启用或禁用在接收数据的材料化视图中进行去重检查,数据来自 Replicated* 表。

可能的值:

0 — 禁用。 1 — 启用。

使用

默认情况下,不对材料化视图进行去重,但在源表中进行去重。 如果由于源表中的去重而跳过 INSERTed 块,则不会插入到附加的物化视图中。此行为的存在是为了使高聚合数据能够插入到材料化视图中,对于插入的块在材料化视图聚合后相同但源自于不同的对源表的 INSERT。 与此同时,此行为“破坏”了 INSERT 的幂等性。如果对主表的 INSERT 成功,并且对材料化视图的 INSERT 失败(例如由于与 ClickHouse Keeper 的通信故障),客户端将收到错误并可以重试操作。然而,材料化视图不会接收第二次插入,因为它将被主(源)表的去重丢弃。设置 deduplicate_blocks_in_dependent_materialized_views 允许更改此行为。在重试时,材料化视图将接收重复的插入,并将在其自身进行去重检查, 忽略源表的检查结果,并插入因第一次失败而丢失的行。

default_materialized_view_sql_security

类型:SQLSecurityType

默认值:DEFINER

允许在创建材料化视图时设置 SQL SECURITY 选项的默认值。有关 SQL 安全性的更多信息

默认值为 DEFINER

default_max_bytes_in_join

类型:UInt64

默认值:1000000000

如果需要 limit 但没有设置 max_bytes_in_join,则右侧表的最大大小。

default_normal_view_sql_security

类型:SQLSecurityType

默认值:INVOKER

允许在创建常规视图时设置默认的 SQL SECURITY 选项。有关 SQL 安全性的更多信息

默认值为 INVOKER

default_table_engine

类型:DefaultTableEngine

默认值:MergeTree

CREATE 语句中未设置 ENGINE 时使用的默认表引擎。

可能的值:

  • 字符串,表示任何有效的表引擎名称。

云默认值:SharedMergeTree

示例

查询:

结果:

在此示例中,任何不指定 Engine 的新表将使用 Log 表引擎:

查询:

结果:

结果:

default_view_definer

Type: String

Default value: CURRENT_USER

允许在创建视图时设置默认 DEFINER 选项。 有关 SQL 安全的更多信息

默认值为 CURRENT_USER

describe_compact_output

Type: Bool

Default value: 0

如果为真,则只在 DESCRIBE 查询结果中包含列名和类型。

describe_extend_object_types

Type: Bool

Default value: 0

在 DESCRIBE 查询中推断 Object 类型的列的具体类型。

describe_include_subcolumns

Type: Bool

Default value: 0

启用在 DESCRIBE 查询中描述子列。例如,成员 TupleMapNullableArray 数据类型的子列。

可能的值:

  • 0 — 子列不包含在 DESCRIBE 查询中。
  • 1 — 子列包含在 DESCRIBE 查询中。

示例

参见 DESCRIBE 语句的示例。

describe_include_virtual_columns

Type: Bool

Default value: 0

如果为真,表的虚拟列将包含在 DESCRIBE 查询的结果中。

dialect

Type: Dialect

Default value: clickhouse

将用于解析查询的方言。

dictionary_validate_primary_key_type

Type: Bool

Default value: 0

验证字典的主键类型。默认情况下,简单布局的 ID 类型将隐式转换为 UInt64。

distinct_overflow_mode

Type: OverflowMode

Default value: throw

当限制被超过时该怎么办。

distributed_aggregation_memory_efficient

Type: Bool

Default value: 1

启用分布式聚合的节省内存模式。

distributed_background_insert_batch

Type: Bool

Default value: 0

启用/禁用以批量发送插入数据。

启用批量发送时, Distributed 表引擎尝试在一个操作中发送多个插入数据的文件,而不是单独发送。批量发送通过更好地利用服务器和网络资源来提高集群性能。

可能的值:

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

distributed_background_insert_max_sleep_time_ms

Type: Milliseconds

Default value: 30000

Distributed 表引擎发送数据的最大间隔。限制 distributed_background_insert_sleep_time_ms 设置中指定的间隔的指数增长。

可能的值:

  • 正整数,以毫秒为单位。

distributed_background_insert_sleep_time_ms

Type: Milliseconds

Default value: 100

Distributed 表引擎发送数据的基本间隔。如发生错误,实际间隔以指数方式增长。

可能的值:

  • 正整数,以毫秒为单位。

distributed_background_insert_split_batch_on_failure

Type: Bool

Default value: 0

启用/禁用在失败时拆分批次。

有时,将特定批次发送到远程分片可能会失败,因为某些复杂的管道(例如带有 GROUP BYMATERIALIZED VIEW)导致 Memory limit exceeded 或类似错误。在这种情况下,重试不会有效(这会使得表的分布式发送卡住),但逐个发送该批次的文件可能成功插入。

因此,将此设置安装为 1 将禁用此类批次的批量发送(即临时禁用失败批次的 distributed_background_insert_batch)。

可能的值:

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

此设置还会影响破损的批次(可能由于异常的服务器(机器)终止而导致,并且没有为 Distributed 表引擎设置 fsync_after_insert/fsync_directories)。

备注

您不应依赖于自动批次拆分,因为这可能会影响性能。

distributed_background_insert_timeout

Type: UInt64

Default value: 0

用于分布式的插入查询的超时。仅在启用 insert_distributed_sync 时使用。零值表示没有超时。

distributed_cache_bypass_connection_pool

ClickHouse Cloud only

Type: Bool

Default value: 0

仅在 ClickHouse Cloud 中有效。允许绕过分布式缓存连接池。

distributed_cache_connect_max_tries

ClickHouse Cloud only

Type: UInt64

Default value: 20

仅在 ClickHouse Cloud 中有效。连接到分布式缓存失败时的最大尝试次数。

distributed_cache_data_packet_ack_window

ClickHouse Cloud only

Type: UInt64

Default value: 5

仅在 ClickHouse Cloud 中有效。一次分布式缓存读取请求中发送 ACK 的数据包序列窗口。

distributed_cache_discard_connection_if_unread_data

ClickHouse Cloud only

Type: Bool

Default value: 1

仅在 ClickHouse Cloud 中有效。如果有未读取的数据,丢弃连接。

distributed_cache_fetch_metrics_only_from_current_az

ClickHouse Cloud only

Type: Bool

Default value: 1

仅在 ClickHouse Cloud 中有效。仅从系统中的当前可用区域获取指标。distributed_cache_metrics、system.distributed_cache_events。

distributed_cache_log_mode

ClickHouse Cloud only

Type: DistributedCacheLogMode

Default value: on_error

仅在 ClickHouse Cloud 中有效。写入到系统的模式。distributed_cache_log。

distributed_cache_max_unacked_inflight_packets

ClickHouse Cloud only

Type: UInt64

Default value: 10

仅在 ClickHouse Cloud 中有效。单次分布式缓存读取请求中最大未确认的在途数据包数。

distributed_cache_min_bytes_for_seek

ClickHouse Cloud only

Type: Bool

Default value: 0

仅在 ClickHouse Cloud 中有效。进行分布式缓存查找的最小字节数。

distributed_cache_pool_behaviour_on_limit

ClickHouse Cloud only

Type: DistributedCachePoolBehaviourOnLimit

Default value: wait

仅在 ClickHouse Cloud 中有效。识别达到池限制时分布式缓存连接的行为。

distributed_cache_read_alignment

ClickHouse Cloud only

Type: UInt64

Default value: 0

仅在 ClickHouse Cloud 中有效。测试用途的设置,请勿更改。

distributed_cache_receive_response_wait_milliseconds

ClickHouse Cloud only

Type: UInt64

Default value: 60000

仅在 ClickHouse Cloud 中有效。从分布式缓存接收请求数据的等待时间,以毫秒为单位。

distributed_cache_receive_timeout_milliseconds

ClickHouse Cloud only

Type: UInt64

Default value: 10000

仅在 ClickHouse Cloud 中有效。等待从分布式缓存接收任何类型响应的时间,以毫秒为单位。

distributed_cache_throw_on_error

ClickHouse Cloud only

Type: Bool

Default value: 0

仅在 ClickHouse Cloud 中有效。在与分布式缓存通信或从分布式缓存接收的异常发生时重新抛出异常。否则在出现错误时跳过分布式缓存。

distributed_cache_wait_connection_from_pool_milliseconds

ClickHouse Cloud only

Type: UInt64

Default value: 100

仅在 ClickHouse Cloud 中有效。如果 distributed_cache_pool_behaviour_on_limit 为 wait,等待从连接池接收连接的时间,以毫秒为单位。

distributed_connections_pool_size

Type: UInt64

Default value: 1024

用于分布式处理所有查询到单个 Distributed 表的远程服务器的最大并发连接数。我们建议设置一个不小于集群中服务器数量的值。

distributed_ddl_entry_format_version

Type: UInt64

Default value: 5

分布式 DDL (ON CLUSTER) 查询的兼容性版本。

distributed_ddl_output_mode

Type: DistributedDDLOutputMode

Default value: throw

设置分布式 DDL 查询结果的格式。

可能的值:

  • throw — 为所有查询已完成的主机返回查询执行状态的结果集。如果查询在某些主机上失败,那么将重新抛出首个异常。如果查询在某些主机上仍未完成且 distributed_ddl_task_timeout 超过了,那么会抛出 TIMEOUT_EXCEEDED 异常。
  • none — 类似于 throw,但分布式 DDL 查询不返回结果集。
  • null_status_on_timeout — 在结果集的某些行中返回 NULL 作为执行状态,而不是在查询未在相应主机上完成时抛出 TIMEOUT_EXCEEDED
  • never_throw — 不抛出 TIMEOUT_EXCEEDED,如果查询在某些主机上失败则不重新抛出异常。
  • none_only_active — 同 none,但不等待 Replicated 数据库的非活动副本。注意:在这种模式下无法判断查询是否未在某个副本上执行,并将在后台执行。
  • null_status_on_timeout_only_active — 类似于 null_status_on_timeout,但不等待 Replicated 数据库的非活动副本。
  • throw_only_active — 类似于 throw,但不等待 Replicated 数据库的非活动副本。

云默认值:none

distributed_ddl_task_timeout

Type: Int64

Default value: 180

设置来自集群中所有主机的 DDL 查询响应的超时。如果 DDL 请求在所有主机上没有执行,则响应将包含超时错误,并且请求将以异步模式执行。负值表示无限制。

可能的值:

  • 正整数。
  • 0 — 异步模式。
  • 负整数 — 无限超时。

distributed_foreground_insert

Type: Bool

Default value: 0

启用或禁用对 Distributed 表的同步数据插入。

默认情况下,当将数据插入 Distributed 表时,ClickHouse 服务器以后台模式将数据发送到集群节点。当 distributed_foreground_insert=1 时,数据会被同步处理,INSERT 操作仅在所有数据都保存在所有分片上(每个分片至少一个副本,如果 internal_replication 为真)后才成功。

可能的值:

  • 0 — 数据在后台模式下插入。
  • 1 — 数据以同步模式插入。

云默认值:1

另请参见

distributed_group_by_no_merge

Type: UInt64

Default value: 0

在分布式查询处理中不合并来自不同服务器的聚合状态,如果确定不同分片上有不同的键,则可以使用此选项。

可能的值:

  • 0 — 禁用(最终查询处理在发起节点上完成)。
  • 1 - 在分布式查询处理中不合并来自不同服务器的聚合状态(查询在分片上完全处理,发起者仅代理数据),可以在确定不同分片上有不同的键的情况下使用。
  • 2 - 与 1 相同,但在发起者上应用 ORDER BYLIMIT(在远程节点上查询完全处理的情况下无法实现,例如 distributed_group_by_no_merge=1)。

示例

distributed_insert_skip_read_only_replicas

Type: Bool

Default value: 0

启用跳过只读副本的 INSERT 查询。

可能的值:

  • 0 — INSERT 如常,如果将前往只读副本,将失败。
  • 1 — 发起者在发送数据到分片之前将跳过只读副本。

distributed_product_mode

Type: DistributedProductMode

Default value: deny

更改 分布式子查询 的行为。

ClickHouse 在查询包含分布式表的乘法,即查询分布式表时包含针对该分布式表的非 GLOBA 子查询时应用此设置。

限制:

  • 仅适用于 IN 和 JOIN 子查询。
  • 仅当 FROM 部分使用包含多个分片的分布式表时。
  • 如果子查询涉及到包含多个分片的分布式表。
  • 不用于表值 remote 函数。

可能的值:

  • deny — 默认值。禁止使用这些类型的子查询(返回 “禁止双重分布式 IN/JOIN 子查询” 异常)。
  • local — 在子查询中将数据库和表替换为目标服务器(分片)的本地对象(保留正常的 IN/JOIN)。
  • global — 将 IN/JOIN 查询替换为 GLOBAL IN/GLOBAL JOIN
  • allow — 允许使用这些类型的子查询。

distributed_push_down_limit

Type: UInt64

Default value: 1

启用或禁用 LIMIT 在每个分片上单独应用。

这将避免:

  • 通过网络发送多余的行;
  • 在发起者上处理超过限制的行。

从 21.9 版本开始,您无法再获得不准确的结果,因为 distributed_push_down_limit 仅在满足至少一个条件时更改查询执行:

可能的值:

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

另见:

distributed_replica_error_cap

Type: UInt64

Default value: 1000

  • 类型:无符号整型
  • 默认值:1000

每个副本的错误计数限制在此值上,防止单个副本积累过多错误。

另请参见:

distributed_replica_error_half_life

Type: Seconds

Default value: 60

  • 类型:秒
  • 默认值:60 秒

控制分布式表中错误归零的速度。如果某个副本在一段时间内不可用,累计 5 个错误,且 distributed_replica_error_half_life 设置为 1 秒,则该副本在最后一个错误后 3 秒被视为正常。

另请参见:

distributed_replica_max_ignored_errors

Type: UInt64

Default value: 0

  • 类型:无符号整型
  • 默认值:0

在选择副本时将被忽略的错误数量(根据 load_balancing 算法)。

另请参见:

do_not_merge_across_partitions_select_final

Type: Bool

Default value: 0

仅在选择最终时合并同一分区中的片段。

empty_result_for_aggregation_by_constant_keys_on_empty_set

Type: Bool

Default value: 1

在对空集合按常量键进行聚合时返回空结果。

empty_result_for_aggregation_by_empty_set

Type: Bool

Default value: 0

在对空集合进行无键聚合时返回空结果。

enable_adaptive_memory_spill_scheduler

Experimental feature. Learn more.

Type: Bool

Default value: 0

触发处理器自适应地将数据溢出到外部存储。目前支持的范围连接。

enable_blob_storage_log

Type: Bool

Default value: 1

将有关 blob 存储操作的信息写入 system.blob_storage_log 表。

enable_deflate_qpl_codec

Type: Bool

Default value: 0

如果开启,DEFLATE_QPL 编解码器可用于压缩列。

enable_early_constant_folding

Type: Bool

Default value: 1

启用查询优化,我们分析函数和子查询结果,如果存在常量则重写查询。

enable_extended_results_for_datetime_functions

Type: Bool

Default value: 0

启用或禁用返回类型结果:

可能的值:

  • 0 — 函数为所有类型的参数返回 DateDateTime
  • 1 — 函数对 Date32DateTime64 参数返回 Date32DateTime64,对其他参数返回 DateDateTime

enable_filesystem_cache

Type: Bool

Default value: 1

为远程文件系统使用缓存。此设置不会打开/关闭磁盘的缓存(必须通过磁盘配置完成),但允许在某些查询中绕过缓存,如果需要的话。

enable_filesystem_cache_log

Type: Bool

Default value: 0

允许记录每个查询的文件系统缓存日志。

enable_filesystem_cache_on_write_operations

Type: Bool

Default value: 0

在写操作时写入缓存。要实际工作,此设置也需要添加到磁盘配置中。

enable_filesystem_read_prefetches_log

Type: Bool

Default value: 0

在查询期间记录到系统.filesystem 的预取日志。仅应用于测试或调试,不建议默认打开。

enable_global_with_statement

Type: Bool

Default value: 1

将 WITH 语句传播至 UNION 查询和所有子查询。

enable_http_compression

Type: Bool

Default value: 0

启用或禁用对 HTTP 请求的响应数据进行压缩。

有关更多信息,请阅读 HTTP 接口描述

可能的值:

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

enable_job_stack_trace

Type: Bool

Default value: 1

在作业结果出现异常时输出作业创建者的堆栈追踪。

enable_lightweight_delete

Type: Bool

Default value: 1

为 mergetree 表启用轻量级 DELETE 变更。

enable_memory_bound_merging_of_aggregation_results

Type: Bool

Default value: 1

启用内存绑定的聚合结果合并策略。

enable_multiple_prewhere_read_steps

Type: Bool

Default value: 1

将更多条件从 WHERE 移动到 PREWHERE,并在存在多个条件与 AND 组合时进行多步从磁盘读取和过滤。

enable_named_columns_in_function_tuple

Type: Bool

Default value: 0

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

enable_optimize_predicate_expression

Type: Bool

Default value: 1

SELECT 查询中启用谓词下推。

谓词下推可能显著减少分布式查询的网络流量。

可能的值:

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

使用

考虑以下查询:

  1. SELECT count() FROM test_table WHERE date = '2018-10-10'
  2. SELECT count() FROM (SELECT * FROM test_table) WHERE date = '2018-10-10'

如果 enable_optimize_predicate_expression = 1,那么这些查询的执行时间是相等的,因为 ClickHouse 在处理子查询时将 WHERE 应用于子查询。

如果 enable_optimize_predicate_expression = 0,那么第二个查询的执行时间会长得多,因为 WHERE 子句对所有数据应用在子查询完成之后。

enable_optimize_predicate_expression_to_final_subquery

Type: Bool

Default value: 1

允许将谓词推送到最终子查询。

enable_order_by_all

Type: Bool

Default value: 1

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

可能的值:

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

示例

查询:

结果:

enable_parsing_to_custom_serialization

Type: Bool

Default value: 1

如果为真,则数据可以根据从表格获得的序列化提示,直接解析到带有自定义序列化的列中(例如稀疏列)。

enable_positional_arguments

Type: Bool

Default value: 1

启用或禁用对 GROUP BYLIMIT BYORDER BY 语句的支持。

可能的值:

  • 0 — 不支持位置参数。
  • 1 — 支持位置参数:可以使用列号代替列名。

示例

查询:

结果:

enable_reads_from_query_cache

Type: Bool

Default value: 1

如果启用,SELECT 查询的结果将从 查询缓存 中检索。

可能的值:

  • 0 - 禁用
  • 1 - 启用

enable_s3_requests_logging

Type: Bool

Default value: 0

启用对 S3 请求的非常明确的日志记录。这仅适用于调试。

enable_scalar_subquery_optimization

Type: Bool

Default value: 1

如果设置为真,可以防止标量子查询(反序列化)大型标量值,并可能避免多次运行相同的子查询。

enable_sharing_sets_for_mutations

Type: Bool

Default value: 1

允许在相同变更的不同任务之间共享为 IN 子查询构建的共享集对象。这减少了内存使用和 CPU 消耗。

enable_software_prefetch_in_aggregation

Type: Bool

Default value: 1

启用在聚合中使用软件预取。

enable_unaligned_array_join

Type: Bool

Default value: 0

允许使用具有不同尺寸的多个数组进行 ARRAY JOIN。当启用此设置时,数组将调整为最长的一个。

enable_url_encoding

Type: Bool

Default value: 1

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

默认情况下启用。

enable_vertical_final

Type: Bool

Default value: 1

如果启用,在 FINAL 期间通过将行标记为删除并稍后进行过滤,而不是合并行来去除重复行。

enable_writes_to_query_cache

Type: Bool

Default value: 1

如果启用,SELECT 查询的结果将在 查询缓存 中存储。

可能的值:

  • 0 - 禁用
  • 1 - 启用

enable_zstd_qat_codec

Type: Bool

Default value: 0

如果开启,ZSTD_QAT 编解码器可用于压缩列。

enforce_strict_identifier_format

Type: Bool

Default value: 0

如果启用,则仅允许包含字母数字字符和下划线的标识符。

engine_file_allow_create_multiple_files

Type: Bool

Default value: 0

启用或禁用在文件引擎表中对于每次插入创建新文件(如果格式带有后缀(JSONORCParquet 等))。如果启用,每次插入都会创建一个新文件,其名称遵循以下模式:

data.Parquet -> data.1.Parquet -> data.2.Parquet 等。

可能的值:

  • 0 — INSERT 查询将新数据追加到文件末尾。
  • 1 — INSERT 查询将创建一个新文件。

flatten_nested

类型:布尔

默认值:1

设置 nested 列的数据格式。

可能的值:

  • 1 — 嵌套列展平为单独的数组。
  • 0 — 嵌套列保持为元组的单一数组。

用法

如果设置为 0,则可以使用任意层级的嵌套。

示例

查询:

结果:

查询:

结果:

force_aggregate_partitions_independently

类型:布尔

默认值:0

强制在适用时使用优化,但启发式决定不使用它。

force_aggregation_in_order

类型:布尔

默认值:0

该设置由服务器本身用于支持分布式查询。请勿手动更改,因为这将破坏正常操作。(强制在分布式聚合期间在远程节点上按顺序使用聚合)。

force_data_skipping_indices

类型:字符串

默认值:

如果未使用传递的数据跳过索引,则禁用查询执行。

考虑以下示例:

force_grouping_standard_compatibility

类型:布尔

默认值:1

使 GROUPING 函数在参数未用作聚合键时返回 1。

force_index_by_date

类型:布尔

默认值:0

如果索引无法根据日期使用,则禁用查询执行。

适用于 MergeTree 家族的表。

如果 force_index_by_date=1,ClickHouse 将检查查询是否具有可以用来限制数据范围的日期键条件。如果没有合适的条件,则抛出异常。但是,它不会检查条件是否减少要读取的数据量。例如,条件 Date != ' 2000-01-01 ' 是可接受的,即使它与表中的所有数据匹配(即,运行查询需要全表扫描)。有关 MergeTree 表中数据范围的更多信息,请参见 MergeTree

force_optimize_projection

类型:布尔

默认值:0

启用或禁用在 SELECT 查询中强制使用 projections,当启用投影优化时(请参见 optimize_use_projections 设置)。

可能的值:

  • 0 — 投影优化不是强制的。
  • 1 — 投影优化是强制的。

force_optimize_projection_name

类型:字符串

默认值:

如果设置为非空字符串,则检查此投影是否在查询中至少使用过一次。

可能的值:

  • 字符串:在查询中使用的投影的名称。

force_optimize_skip_unused_shards

类型:UInt64

默认值:0

如果启用 optimize_skip_unused_shards 且无法跳过未使用的分片,则启用或禁用查询执行。如果无法跳过并且启用该设置,将引发异常。

可能的值:

  • 0 — 禁用。ClickHouse 不会抛出异常。
  • 1 — 启用。仅当表具有分片键时,查询执行被禁用。
  • 2 — 启用。无论表是否已定义分片键,查询执行均被禁用。

force_optimize_skip_unused_shards_nesting

类型:UInt64

默认值:0

控制 force_optimize_skip_unused_shards(因此仍然需要 force_optimize_skip_unused_shards)取决于分布式查询的嵌套级别(当您有一个 Distributed 表指向另一个 Distributed 表时)。

可能的值:

  • 0 - 禁用,force_optimize_skip_unused_shards 总是有效。
  • 1 — 仅在第一级启用 force_optimize_skip_unused_shards
  • 2 — 允许 force_optimize_skip_unused_shards 直至第二级。

force_primary_key

类型:布尔

默认值:0

如果无法按主键索引,则禁用查询执行。

适用于 MergeTree 家族的表。

如果 force_primary_key=1,ClickHouse 将检查查询是否具有可以用来限制数据范围的主键条件。如果没有合适的条件,则抛出异常。但是,它不会检查条件是否减少要读取的数据量。有关 MergeTree 表中数据范围的更多信息,请参见 MergeTree

force_remove_data_recursively_on_drop

类型:布尔

默认值:0

在 DROP 查询时递归删除数据。避免 “目录不为空” 的错误,但可能会静默删除已脱离的数据。

formatdatetime_f_prints_scale_number_of_digits

类型:布尔

默认值:0

格式化程序 '%f' 在 'formatDateTime' 函数中仅打印 DateTime64 的精度数字,而不是固定的 6 位数字。

formatdatetime_f_prints_single_zero

类型:布尔

默认值:0

格式化程序 '%f' 在 'formatDateTime' 函数中打印单个零,而不是六个零,如果格式化值没有小数秒。

formatdatetime_format_without_leading_zeros

类型:布尔

默认值:0

格式化程序 '%c'、'%l' 和 '%k' 在 'formatDateTime' 函数中打印没有前导零的月份和小时。

formatdatetime_parsedatetime_m_is_month_name

类型:布尔

默认值:1

格式化程序 '%M' 在 'formatDateTime' 和 'parseDateTime' 函数中打印/解析月份名称而不是分钟。

fsync_metadata

类型:布尔

默认值:1

启用或禁用在写入 .sql 文件时进行 fsync。默认启用。

如果服务器有数百万个不断创建和销毁的小表,禁用它是有意义的。

function_implementation

类型:字符串

默认值:

选择特定目标或变体的函数实现(实验性)。如果为空,则启用所有实现。

function_json_value_return_type_allow_complex

类型:布尔

默认值:0

控制是否允许 json_value 函数返回复杂类型(例如:结构、数组、映射)。

可能的值:

  • true — 允许。
  • false — 不允许。

function_json_value_return_type_allow_nullable

类型:布尔

默认值:0

控制是否允许 JSON_VALUE 函数在值不存在时返回 NULL

可能的值:

  • true — 允许。
  • false — 不允许。

function_locate_has_mysql_compatible_argument_order

类型:布尔

默认值:1

控制函数 locate 中参数的顺序。

可能的值:

  • 0 — 函数 locate 接受参数 (haystack, needle[, start_pos])
  • 1 — 函数 locate 接受参数 (needle, haystack, [, start_pos])(MySQL 兼容行为)。

function_range_max_elements_in_block

类型:UInt64

默认值:500000000

为函数 range 生成的数据量设置安全阈值。定义函数每个数据块生成的最大值(每行的数组大小之和)。

可能的值:

  • 正整数。

另见

function_sleep_max_microseconds_per_block

类型:UInt64

默认值:3000000

函数 sleep 允许在每个块中休眠的最大微秒数。如果用户调用它使用更大的值,将抛出异常。它是一个安全阈值。

function_visible_width_behavior

类型:UInt64

默认值:1

visibleWidth 行为的版本。0 - 仅计算代码点的数量;1 - 正确计算零宽度和合并字符,将全宽字符计为两个,估计制表符宽度,计算删除字符。

geo_distance_returns_float64_on_float64_arguments

类型:布尔

默认值:1

如果 geoDistancegreatCircleDistancegreatCircleAngle 函数的所有四个参数都是 Float64,则返回 Float64,并在内部计算中使用双精度。 在以前的 ClickHouse 版本中,这些函数始终返回 Float32。

glob_expansion_max_elements

类型:UInt64

默认值:1000

允许的最大地址数量(用于外部存储、表函数等)。

grace_hash_join_initial_buckets

Experimental feature. Learn more.

类型:NonZeroUInt64

默认值:1

初始的 graceful hash join 桶数。

grace_hash_join_max_buckets

Experimental feature. Learn more.

类型:NonZeroUInt64

默认值:1024

grace hash join 桶的数量限制。

group_by_overflow_mode

类型:OverflowModeGroupBy

默认值:throw

当限制被超出时该怎么做。

group_by_two_level_threshold

类型:UInt64

默认值:100000

从多少个键开始,进行两级聚合。0 - 没有设置阈值。

group_by_two_level_threshold_bytes

类型:UInt64

默认值:50000000

从多少字节的聚合状态开始使用两级聚合。0 - 没有设置阈值。当至少触发一个阈值时使用两级聚合。

group_by_use_nulls

类型:布尔

默认值:0

更改 GROUP BY 子句 对聚合键类型的处理方式。 当使用 ROLLUPCUBEGROUPING SETS 指定时,一些聚合键可能不会用于生成某些结果行。 这些键对应的列根据此设置填充默认值或 NULL

可能的值:

  • 0 — 用于产生缺失值的聚合键的默认值被使用。
  • 1 — ClickHouse 以 SQL 标准规定的方式执行 GROUP BY。聚合键的类型被转换为 Nullable。对于没有使用的行,相应聚合键的列将填充 NULL

另见:

h3togeo_lon_lat_result_order

类型:布尔

默认值:0

函数 'h3ToGeo' 返回 (lon, lat) 如果为真,否则返回 (lat, lon)。

handshake_timeout_ms

类型:毫秒

默认值:10000

握手期间从副本接收 Hello 数据包的超时(毫秒)。

hdfs_create_new_file_on_insert

类型:布尔

默认值:0

启用或禁用在 HDFS 引擎表中每次插入时创建新文件。如果启用,在每次插入时,将创建新 HDFS 文件,其名称类似于以下模式:

初始: data.Parquet.gz -> data.1.Parquet.gz -> data.2.Parquet.gz,依此类推。

可能的值:

  • 0 — INSERT 查询将新数据附加到文件末尾。
  • 1 — INSERT 查询将创建新文件。

hdfs_ignore_file_doesnt_exist

类型:布尔

默认值:0

如果在读取特定键时文件不存在,则忽略其缺失。

可能的值:

  • 1 — SELECT 返回空结果。
  • 0 — SELECT 抛出异常。

hdfs_replication

类型:UInt64

默认值:0

实际的副本数可以在创建 hdfs 文件时指定。

hdfs_skip_empty_files

类型:布尔

默认值:0

启用或禁用跳过 HDFS 引擎表中的空文件。

可能的值:

  • 0 — SELECT 如果空文件与请求的格式不兼容,则抛出异常。
  • 1 — SELECT 返回空结果,针对空文件。

hdfs_throw_on_zero_files_match

类型:布尔

默认值:0

如果根据 glob 扩展规则匹配零文件,则抛出错误。

可能的值:

  • 1 — SELECT 抛出异常。
  • 0 — SELECT 返回空结果。

hdfs_truncate_on_insert

类型:布尔

默认值:0

启用或禁用在 hdfs 引擎表中插入前的截断。如果禁用,则在尝试插入时将抛出异常,前提是 HDFS 中已经存在文件。

可能的值:

  • 0 — INSERT 查询将新数据附加到文件末尾。
  • 1 — INSERT 查询用新数据替换文件的现有内容。

hedged_connection_timeout_ms

类型:毫秒

默认值:50

为 Hedged 请求建立与副本连接的超时。

Experimental feature. Learn more.

类型:UInt64

默认值:256

搜索向量相似性索引时动态候选列表的大小,也称为 'ef_search'。

hsts_max_age

类型:UInt64

默认值:0

HSTS 的过期时间。0 表示禁用 HSTS。

http_connection_timeout

类型:秒

默认值:1

HTTP 连接超时(以秒为单位)。

可能的值:

  • 任何正整数。
  • 0 - 禁用(无限超时)。

http_headers_progress_interval_ms

类型:UInt64

默认值:100

HTTP Headers X-ClickHouse-Progress 的发送频率不得低于每个指定的间隔。

http_make_head_request

类型:布尔

默认值:1

http_make_head_request 设置允许在从 HTTP 读取数据时执行 HEAD 请求,以检索有关要读取的文件的信息,例如其大小。由于默认启用,因此在服务器不支持 HEAD 请求的情况下,可能希望禁用此设置。

http_max_field_name_size

类型:UInt64

默认值:131072

HTTP 头字段名称的最大长度。

http_max_field_value_size

类型:UInt64

默认值:131072

HTTP 头字段值的最大长度。

http_max_fields

类型:UInt64

默认值:1000000

HTTP 头中字段的最大数量。

http_max_multipart_form_data_size

类型:UInt64

默认值:1073741824

对 multipart/form-data 内容大小的限制。此设置不能从 URL 参数解析,应在用户个人资料中设置。请注意,内容在查询执行开始之前被解析,外部表被创建在内存中。这是唯一在该阶段有效的限制(对最大内存使用和最大执行时间的限制在读取 HTTP 表单数据时没有效果)。

http_max_request_param_data_size

类型:UInt64

默认值:10485760

在预定义 HTTP 请求中作为查询参数使用的请求数据的大小限制。

http_max_tries

类型:UInt64

默认值:10

通过 http 读取的最大尝试次数。

http_max_uri_size

类型:UInt64

默认值:1048576

设置 HTTP 请求的最大 URI 长度。

可能的值:

  • 正整数。

http_native_compression_disable_checksumming_on_decompress

类型:布尔

默认值:0

启用或禁用在解压客户端的 HTTP POST 数据时进行校验和验证。仅用于 ClickHouse 原生压缩格式(不与 gzipdeflate 一起使用)。

有关更多信息,请阅读 HTTP 接口描述

可能的值:

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

http_receive_timeout

类型:秒

默认值:30

HTTP 接收超时(以秒为单位)。

可能的值:

  • 任何正整数。
  • 0 - 禁用(无限超时)。

http_response_buffer_size

类型:UInt64

默认值:0

在向客户端发送 HTTP 响应或刷新到磁盘之前,在服务器内存中缓存的字节数(当启用 http_wait_end_of_query 时)。

http_response_headers

类型:映射

默认值:

允许添加或覆盖服务器将在成功查询结果的响应中返回的 HTTP 头。这仅影响 HTTP 接口。

如果头已经被默认设置,提供的值将覆盖它。 如果头未默认设置,它将被添加到头列表中。 服务器默认设置而未通过此设置覆盖的头,将保持不变。

该设置允许您将头设置为常量值。目前没有方法将头设置为动态计算值。

名称或值中不能包含 ASCII 控制字符。

如果您实现了一个 UI 应用程序,允许用户修改设置,同时又根据返回的头做出决定,则建议将此设置限制为只读。

示例:SET http_response_headers = '{"Content-Type": "image/png"}'

http_retry_initial_backoff_ms

类型:UInt64

默认值:100

重试通过 http 读取时的回退的最小毫秒数。

没有忽略任何索引的查询:

忽略 xy_idx 索引:

适用于 MergeTree 家族中的表。

ignore_drop_queries_probability

类型: Float

默认值: 0

如果启用,服务器将忽略所有 DROP 表查询的指定概率(对于 Memory 和 JOIN 引擎,它将将 DROP 替换为 TRUNCATE)。用于测试目的。

ignore_materialized_views_with_dropped_target_table

类型: Bool

默认值: 0

在推送到视图时忽略已删除目标表的物化视图。

ignore_on_cluster_for_replicated_access_entities_queries

类型: Bool

默认值: 0

忽略对复制访问实体管理查询的 ON CLUSTER 子句。

ignore_on_cluster_for_replicated_named_collections_queries

类型: Bool

默认值: 0

忽略对复制命名集合管理查询的 ON CLUSTER 子句。

ignore_on_cluster_for_replicated_udf_queries

类型: Bool

默认值: 0

忽略对复制用户定义函数管理查询的 ON CLUSTER 子句。

implicit_select

类型: Bool

默认值: 0

允许在没有前导 SELECT 关键字的情况下编写简单的 SELECT 查询,这使得计算器风格的使用变得简单,例如 1 + 2 成为有效的查询。

clickhouse-local 中默认启用,并可以明确禁用。

implicit_transaction

Experimental feature. Learn more.

类型: Bool

默认值: 0

如果启用且尚未在事务中,则将查询包装在一个完整事务中(开始 + 提交或回滚)。

input_format_parallel_parsing

类型: Bool

默认值: 1

启用或禁用数据格式的有序并行解析。仅支持 TSVTSKVCSVJSONEachRow 格式。

可能的值:

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

insert_allow_materialized_columns

类型: Bool

默认值: 0

如果设置启用,允许在 INSERT 中使用物化列。

insert_deduplicate

类型: Bool

默认值: 1

启用或禁用 INSERT 的区块去重(适用于 Replicated* 表)。

可能的值:

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

默认情况下,通过 INSERT 语句插入到复制表的区块将被去重(见 数据复制)。 对于复制表,默认情况下每个分区仅去重最近的 100 个区块(见 replicated_deduplication_windowreplicated_deduplication_window_seconds)。 对于非复制表,请参见 non_replicated_deduplication_window

insert_deduplication_token

类型: 字符串

默认值:

该设置允许用户在 MergeTree/ReplicatedMergeTree 中提供自定义去重语义。 例如,通过在每个 INSERT 语句中提供唯一值来设置,可以避免相同插入的数据被去重。

可能的值:

  • 任何字符串

insert_deduplication_token 仅在不为空时用于去重。

对于复制表,默认情况下每个分区仅去重最近的 100 次插入(见 replicated_deduplication_windowreplicated_deduplication_window_seconds)。 对于非复制表,请参见 non_replicated_deduplication_window

备注

insert_deduplication_token 在分区级别上工作(同样适用于 insert_deduplication 校验和)。多个分区可以具有相同的 insert_deduplication_token

示例:

insert_keeper_fault_injection_probability

类型: Float

默认值: 0

在插入过程中 Keeper 请求的故障概率近似值。有效值范围在 [0.0f, 1.0f] 之间。

insert_keeper_fault_injection_seed

类型: UInt64

默认值: 0

0 - 随机种子,否则为设置的值。

insert_keeper_max_retries

类型: UInt64

默认值: 20

该设置设置 ClickHouse Keeper(或 ZooKeeper)请求在插入到复制 MergeTree 时的最大重试次数。仅考虑因网络错误、Keeper 会话超时或请求超时而失败的 Keeper 请求。

可能的值:

  • 正整数。
  • 0 — 禁用重试。

云的默认值:20

Keeper 请求重试在经历了一些超时后进行。超时由以下设置控制:insert_keeper_retry_initial_backoff_msinsert_keeper_retry_max_backoff_ms。 第一次重试在 insert_keeper_retry_initial_backoff_ms 超时后进行。后续的超时将按以下公式计算:

例如,如果 insert_keeper_retry_initial_backoff_ms=100insert_keeper_retry_max_backoff_ms=10000insert_keeper_max_retries=8,那么超时将为 100, 200, 400, 800, 1600, 3200, 6400, 10000

除了容错能力,重试的目的是为了提供更好的用户体验——例如,在 Keeper 由于升级而重启时,允许避免在 INSERT 执行期间返回错误。

insert_keeper_retry_initial_backoff_ms

类型: UInt64

默认值: 100

在 INSERT 查询执行期间重试失败的 Keeper 请求的初始超时(以毫秒为单位)。

可能的值:

  • 正整数。
  • 0 — 无超时。

insert_keeper_retry_max_backoff_ms

类型: UInt64

默认值: 10000

在 INSERT 查询执行期间重试失败的 Keeper 请求的最大超时(以毫秒为单位)。

可能的值:

  • 正整数。
  • 0 — 最大超时没有限制。

insert_null_as_default

类型: Bool

默认值: 1

启用或禁用向非 nullable 数据类型的列插入 默认值,而不是 NULL。 如果列类型不是可空的且此设置被禁用,则插入 NULL 将导致异常。若列类型是可空的,则 NULL 值将照样插入,无论此设置如何。

该设置适用于 INSERT ... SELECT 查询。请注意,SELECT 子查询可以与 UNION ALL 子句连接。

可能的值:

  • 0 — 向非可空列插入 NULL 将导致异常。
  • 1 — 默认列值将代替 NULL 插入。

insert_quorum

类型: UInt64Auto

默认值: 0

备注

该设置不适用于 SharedMergeTree,更多信息请参见 SharedMergeTree 一致性

启用法定写入。

  • 如果 insert_quorum < 2,则禁用法定写入。
  • 如果 insert_quorum >= 2,则启用法定写入。
  • 如果 insert_quorum = 'auto',则使用多数数目(number_of_replicas / 2 + 1)作为法定数目。

法定写入

INSERT 仅在 ClickHouse 成功写入 insert_quorum 个副本的数据时才成功,时间限制为 insert_quorum_timeout。如果由于任何原因成功写入的副本数量未达到 insert_quorum,则写入视为失败,ClickHouse 将删除所有已写入数据的副本中的插入区块。

insert_quorum_parallel 被禁用时,法定副本上的所有副本是一致的,即它们包含所有先前 INSERT 查询的数据(INSERT 序列是线性化的)。在写入使用 insert_quorum 和禁用 insert_quorum_parallel 的数据时,可以通过使用 select_sequential_consistency 启用 SELECT 查询的顺序一致性。

ClickHouse 生成异常:

  • 如果查询时可用的副本数少于 insert_quorum
  • 当禁用 insert_quorum_parallel 时,如果在 insert_quorum 的副本中尚未插入前一个区块时尝试写入数据。此情况可能发生在用户尝试在前一个 INSERT 查询完成之前对同一表进行另一个 INSERT 查询时。

参见:

insert_quorum_parallel

类型: Bool

默认值: 1

备注

该设置不适用于 SharedMergeTree,更多信息请参见 SharedMergeTree 一致性

启用或禁用法定 INSERT 查询的并行性。如果启用,则可以在先前查询尚未完成时发送额外的 INSERT 查询。如果禁用,对同一表的额外写入将被拒绝。

可能的值:

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

参见:

insert_quorum_timeout

类型: 毫秒

默认值: 600000

写入法定超时,以毫秒为单位。如果超时已过,而尚未进行写入,则 ClickHouse 将生成异常,客户端必须重复查询以将同一块写入同一或其他副本。

参见:

insert_shard_id

类型: UInt64

默认值: 0

如果不为 0,则指定要将数据同步插入到的 Distributed 表的分片。

如果 insert_shard_id 的值不正确,服务器将抛出异常。

要获取 requested_cluster 上的分片数,可以检查服务器配置或使用以下查询:

可能的值:

  • 0 — 禁用。
  • 1 到相应 Distributed 表的 shards_num 的任何数字。

示例

查询:

结果:

interactive_delay

类型: UInt64

默认值: 100000

检查请求执行是否已取消并发送进度的时间间隔(以微秒为单位)。

intersect_default_mode

类型: SetOperationMode

默认值: ALL

设置 INTERSECT 查询中的默认模式。可能的值:空字符串,'ALL','DISTINCT'。如果为空,则不带模式的查询将抛出异常。

join_algorithm

类型: JoinAlgorithm

默认值: direct,parallel_hash,hash

指定使用哪种 JOIN 算法。

可以指定多种算法,并根据查询类型/严格性和表引擎为特定查询选择可用算法。

可能的值:

  • grace_hash

Grace hash join 被使用。Grace hash 提供了一种性能较好的复杂连接的算法选项,同时限制内存使用。

Grace join 的第一阶段读取右表并根据关键列的哈希值将其拆分为 N 个桶(初始时 N 为 grace_hash_join_initial_buckets)。这是以确保每个桶可以独立处理的方式完成的。第一桶中的行被添加到内存中的哈希表中,而其他则保存在磁盘上。如果哈希表超出了内存限制(例如,按照 max_bytes_in_join 的设置),则增大桶的数量并重新分配每行的桶。任何不属于当前桶的行将被刷新并重新分配。

支持 INNER/LEFT/RIGHT/FULL ALL/ANY JOIN

  • hash

使用 Hash join algorithm。最通用的实现,支持所有种类和严格性以及多个连接键,在 JOIN ON 部分中使用 OR 组合。

使用 hash 算法时,JOIN 右侧被上传到内存。

  • parallel_hash

hash 连接的一种变体,将数据拆分为桶并并行构建多个哈希表以加快此过程。

使用 parallel_hash 算法时,JOIN 右侧被上传到内存。

  • partial_merge

sort-merge 算法 的一种变体,在这种变体中,仅完全排序右表。

RIGHT JOINFULL JOIN 仅支持 ALL 严格性(不支持 SEMIANTIANYASOF)。

使用 partial_merge 算法时,ClickHouse 将数据排序并将其转储到磁盘。ClickHouse 中的 partial_merge 算法与经典实现略有不同。首先,ClickHouse 按照连接键将右表排序为块,并为已排序块创建最小-最大索引。然后,它按 join key 对左表的部分进行排序,并将其与右表连接。最小-最大索引还用于跳过不需要的右表块。

  • direct

该算法可应用于支持键值请求的右表存储。

direct 算法使用左表的行作为键在右表中进行查找。仅在特殊存储(例如 DictionaryEmbeddedRocksDB)中支持,仅适用于 LEFTINNER JOIN。

  • auto

当设置为 auto 时,首先尝试 hash 连接,如果违反内存限制,则动态切换到其他算法。

  • full_sorting_merge

Sort-merge 算法 在连接之前对已连接的表进行完全排序。

  • prefer_partial_merge

如果可能,ClickHouse 始终尝试使用 partial_merge 连接,否则使用 hash已弃用,与 partial_merge,hash 相同。

  • default (已弃用)

过时的值,请勿再使用。 与 direct,hash 相同,即尝试使用直接连接和哈希连接(以此顺序)。

join_any_take_last_row

类型: Bool

默认值: 0

更改具有 ANY 严格性连接操作的行为。

备注

此设置仅适用于具有 Join 引擎表的 JOIN 操作。

可能的值:

  • 0 — 如果右表有多于一行匹配,则只连接找到的第一行。
  • 1 — 如果右表有多于一行匹配,则只连接找到的最后一行。

参见:

join_default_strictness

类型: JoinStrictness

默认值: ALL

JOIN 子句 设置默认严格性。

可能的值:

  • ALL — 如果右表有多个匹配行,ClickHouse 会从匹配行创建一个 笛卡尔积。这是标准 SQL 中的正常 JOIN 行为。
  • ANY — 如果右表有多个匹配行,则仅连接找到的第一行。如果右表只有一行匹配,则 ANYALL 的结果是相同的。
  • ASOF — 用于连接具有不确定匹配的序列。
  • 空字符串 — 如果查询中未指定 ALLANY,ClickHouse 将抛出异常。

join_on_disk_max_files_to_merge

类型: UInt64

默认值: 64

限制在磁盘上执行的 MergeJoin 操作中允许的并行排序文件的数量。

设置的值越大,使用的内存越多,磁盘 I/O 请求的数量越少。

可能的值:

  • 任何正整数,最小值为 2。

join_output_by_rowlist_perkey_rows_threshold

类型: UInt64

默认值: 5

右表中每个键的行数平均值的下限,用于确定是否在哈希连接中按行列表输出。

join_overflow_mode

类型: OverflowMode

默认值: throw

当超出限制时应该采取什么措施。

join_to_sort_maximum_table_rows

Experimental feature. Learn more.

类型: UInt64

默认值: 10000

右表中行的最大数量,以确定是否在左连接或内部连接中按键重新排列右表。

join_to_sort_minimum_perkey_rows

Experimental feature. Learn more.

类型: UInt64

默认值: 40

右表中每个键的行数的下限,用于确定是否在左连接或内部连接中按键重新排列右表。此设置确保不对稀疏表键应用优化。

join_use_nulls

类型: Bool

默认值: 0

设置 JOIN 行为的类型。在合并表时,可能会出现空单元格。ClickHouse 根据此设置以不同方式填充它们。

可能的值:

  • 0 — 空单元格用相应字段类型的默认值填充。
  • 1 — JOIN 的行为与标准 SQL 相同。相应字段的类型将转换为 Nullable,空单元格用 NULL 填充。

joined_subquery_requires_alias

类型: Bool

默认值: 1

强制连接的子查询和表函数具有别名,以便正确的名称资格。

kafka_disable_num_consumers_limit

类型: Bool

默认值: 0

禁用针对可用 CPU 核心数量的 kafka_num_consumers 的限制。

kafka_max_wait_ms

类型: 毫秒

默认值: 5000

Kafka 读取消息之前的等待时间(以毫秒为单位)。

可能的值:

  • 正整数。
  • 0 — 无限超时。

参见:

keeper_map_strict_mode

类型: Bool

默认值: 0

在对 KeeperMap 执行操作时强制执行额外检查。例如,在插入已存在的键时抛出异常。

keeper_max_retries

类型: UInt64

默认值: 10

一般 Keeper 操作的最大重试次数。

keeper_retry_initial_backoff_ms

类型: UInt64

默认值: 100

一般 Keeper 操作的初始回退超时。

keeper_retry_max_backoff_ms

类型: UInt64

默认值: 5000

一般 Keeper 操作的最大回退超时。

least_greatest_legacy_null_behavior

类型: Bool

默认值: 0

如果启用,函数 'least' 和 'greatest' 在其参数之一为 NULL 时返回 NULL。

legacy_column_name_of_tuple_literal

类型: Bool

默认值: 0

在大型元组文字的列名称中列出所有元素名称,而不是哈希。此设置仅由于兼容原因存在。在从低于 21.7 版本的集群进行滚动更新到更高版本时,设置为 'true' 是有意义的。

lightweight_deletes_sync

类型: UInt64

默认值: 2

mutations_sync 相同,但仅控制轻量级删除的执行。

可能的值:

  • 0 - 变更异步执行。
  • 1 - 查询等待当前服务器上的轻量级删除完成。
  • 2 - 查询等待所有副本(如果存在)的轻量级删除完成。

另见

limit

类型: UInt64

默认值: 0

设置要从查询结果中获取的最大行数。它调整由 LIMIT 子句设置的值,使得查询中指定的限制不能超过该设置。

可能的值:

  • 0 — 行数无限制。
  • 正整数。

live_view_heartbeat_interval

Experimental feature. Learn more.

类型: 秒

默认值: 15

用于指示实时查询存活的心跳间隔(以秒为单位)。

load_balancing

类型: LoadBalancing

默认值: random

指定用于分布式查询处理的副本选择算法。

ClickHouse 支持以下选择副本的算法:

另见:

随机(默认)

为每个副本计算错误的数量。查询被发送到具有最少错误的副本,如果有多个这样的副本,则发送到其中任何一个。 缺点:未考虑服务器的接近性;如果副本存在不同的数据,您也将获得不同的数据。

最近主机名

为每个副本计算错误的数量。每 5 分钟,将错误数量整体除以 2。因此,使用指数平滑计算最近一段时间的错误数量。如果有一个副本的错误数量最少(即最近在其他副本上发生了错误),查询将发送给它。如果有多个副本具有相同的最小错误数量,则查询将发送到其主机名与配置文件中服务器的主机名最相似的副本(在相同位置不同字符的数量,直到两个主机名的最小长度)。

例如,example01-01-1 和 example01-01-2 只在一个位置不同,而 example01-01-1 和 example01-02-2 则在两个位置不同。 这种方法看似简单,但不需要关于网络拓扑的外部数据,也不需要比较 IP 地址,这对我们的 IPv6 地址而言很复杂。

因此,如果有等效的副本,偏好按名称最接近的那个。 我们也可以假设,在发送查询到同一服务器时,如果没有故障,分布式查询也会转到同一服务器。因此,即使副本上的数据不同,查询也会基本返回相同的结果。

主机名 Levenshtein 距离

nearest_hostname 相同,但以 Levenshtein 距离 的方式比较主机名。例如:

具有相同错误数量的副本将按照配置中指定的顺序访问。当您确切知道哪个副本更可取时,这种方法是合适的。

首选或随机

此算法选择集合中的第一个副本,如果第一个不可用,则选择一个随机副本。这在跨副本拓扑设置中有效,但在其他配置中无效。

first_or_random 算法解决了 in_order 算法的问题。当使用 in_order 时,如果一个副本宕机,下一个副本将承担双重负载,而其余副本处理通常的流量。使用 first_or_random 算法时,负载在仍可用的副本之间均匀分配。

可以通过使用设置 load_balancing_first_offset 明确定义第一个副本。这为在副本之间重新平衡查询工作负载提供了更多控制。

循环轮询

此算法在具有相同错误数量的副本之间采用循环轮询策略(仅计算带有 round_robin 策略的查询)。

load_balancing_first_offset

类型: UInt64

默认值: 0

在使用 FIRST_OR_RANDOM 负载均衡策略时,优先发送查询的副本。

load_marks_asynchronously

类型: Bool

默认值: 0

异步加载 MergeTree 标记。

local_filesystem_read_method

类型: String

默认值: pread_threadpool

从本地文件系统读取数据的方法,选项包括:read、pread、mmap、io_uring、pread_threadpool。io_uring 方法是实验性的,并且在存在并发读取和写入的情况下,不适用于 Log、TinyLog、StripeLog、File、Set 和 Join 以及其他可附加文件的表。

local_filesystem_read_prefetch

类型: Bool

默认值: 0

在从本地文件系统读取数据时是否使用预读取。

lock_acquire_timeout

类型: Seconds

默认值: 120

定义一个锁请求在失败前等待的秒数。

锁超时用于保护在执行与表的读取/写入操作时避免死锁。当超时到期且锁请求失败时,ClickHouse 服务器抛出异常 "Locking attempt timed out! Possible deadlock avoided. Client should retry." 带有错误代码 DEADLOCK_AVOIDED

可能的值:

  • 正整数(以秒为单位)。
  • 0 - 无锁超时。

log_comment

类型: String

默认值:

指定 system.query_log 表的 log_comment 字段的值和服务器日志的注释文本。

可以用来改善服务器日志的可读性。此外,有助于在运行 clickhouse-test 后从 system.query_log 选择与测试相关的查询。

可能的值:

  • 任何不超过 max_query_size 的字符串。如果超过 max_query_size,服务器将抛出异常。

示例

查询:

结果:

log_formatted_queries

类型: Bool

默认值: 0

允许将格式化查询记录到 system.query_log 系统表中(填充 formatted_query 列)。

可能的值:

  • 0 — 系统表中不记录格式化查询。
  • 1 — 系统表中记录格式化查询。

log_processors_profiles

类型: Bool

默认值: 1

写入处理器在执行/等待数据期间花费的时间到 system.processors_profile_log 表中。

另请参见:

log_profile_events

类型: Bool

默认值: 1

将查询性能统计信息记录到 query_log、query_thread_log 和 query_views_log 中。

log_queries

类型: Bool

默认值: 1

设置查询日志记录。

使用此设置发送到 ClickHouse 的查询将根据 query_log 服务器配置参数中的规则记录。

示例:

log_queries_cut_to_length

类型: UInt64

默认值: 100000

如果查询长度大于指定阈值(以字节为单位),则在写入查询日志时裁剪查询。还限制普通文本日志中打印的查询的长度。

log_queries_min_query_duration_ms

类型: Milliseconds

默认值: 0

如果启用(非零),则执行速度快于此设置值的查询将不会被记录(您可以将其视为 MySQL Slow Query Loglong_query_time),这基本上意味着您不会在以下表中找到它们:

  • system.query_log
  • system.query_thread_log

只有以下类型的查询会记录到日志中:

  • QUERY_FINISH

  • EXCEPTION_WHILE_PROCESSING

  • 类型:毫秒

  • 默认值:0(任何查询)

log_queries_min_type

类型: LogQueriesType

默认值: QUERY_START

记录的 query_log 最小类型。

可能的值:

  • QUERY_START (=1)
  • QUERY_FINISH (=2)
  • EXCEPTION_BEFORE_START (=3)
  • EXCEPTION_WHILE_PROCESSING (=4)

可以用来限制哪些实体将被记录到 query_log,例如,如果您只对错误感兴趣,则可以使用 EXCEPTION_WHILE_PROCESSING

log_queries_probability

类型: Float

默认值: 1

允许用户以指定概率向 query_logquery_thread_logquery_views_log 系统表写入仅是随机选择的查询样本。这有助于减少每秒大量查询的负载。

可能的值:

  • 0 — 查询未记录在系统表中。
  • 介于 [0..1] 之间的正浮点数。例如,如果设置值为 0.5,则大约一半的查询记录在系统表中。
  • 1 — 所有查询记录在系统表中。

log_query_settings

类型: Bool

默认值: 1

将查询设置记录到 query_log 和 OpenTelemetry span 日志中。

log_query_threads

类型: Bool

默认值: 0

设置查询线程日志记录。

查询线程日志记录到 system.query_thread_log 表中。该设置仅在 log_queries 为真时生效。使用此设置由 ClickHouse 执行的查询线程将根据 query_thread_log 服务器配置参数中的规则记录。

可能的值:

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

示例

log_query_views

类型: Bool

默认值: 1

设置查询视图日志记录。

当启用此设置的 ClickHouse 运行的查询具有相关视图(物化视图或实时视图)时,它们将记录在 query_views_log 服务器配置参数中。

示例:

low_cardinality_allow_in_native_format

类型: Bool

默认值: 1

允许或限制在 Native 格式中使用 LowCardinality 数据类型。

如果使用 LowCardinality 受到限制,ClickHouse 服务器将在 SELECT 查询中将 LowCardinality 列转换为普通列,并在 INSERT 查询中将普通列转换为 LowCardinality 列。

此设置主要是为了不支持 LowCardinality 数据类型的第三方客户端。

可能的值:

  • 1 — 不限制使用 LowCardinality
  • 0 — 限制使用 LowCardinality

low_cardinality_max_dictionary_size

类型: UInt64

默认值: 8192

设置可以写入存储文件系统的 LowCardinality 数据类型的共享全局字典的最大行数。此设置可防止字典无限增长而导致 RAM 问题。由于最大字典大小限制,ClickHouse 写入的所有无法编码的数据都将以普通方式写入。

可能的值:

  • 任何正整数。

low_cardinality_use_single_dictionary_for_part

类型: Bool

默认值: 0

开启或关闭对数据分片使用单一字典的选择。

默认情况下,ClickHouse 服务器会监控字典的大小,如果字典溢出,则服务器会开始写入下一个字典。要禁止创建多个字典,请设置 low_cardinality_use_single_dictionary_for_part = 1

可能的值:

  • 1 — 禁止为数据分片创建多个字典。
  • 0 — 不禁止为数据分片创建多个字典。

materialize_skip_indexes_on_insert

类型: Bool

默认值: 1

如果 INSERT 构建并存储跳过索引。如果禁用,跳过索引将在合并期间或通过显式 MATERIALIZE INDEX 构建和存储。

materialize_statistics_on_insert

类型: Bool

默认值: 1

如果 INSERT 构建并插入统计信息。如果禁用,统计信息将在合并期间或通过显式 MATERIALIZE STATISTICS 构建和存储。

materialize_ttl_after_modify

类型: Bool

默认值: 1

在 ALTER MODIFY TTL 查询后,应用 TTL 对旧数据。

materialized_views_ignore_errors

类型: Bool

默认值: 0

允许忽略物化视图中的错误,并将原始块传送到表中,而不考虑 MV。

max_analyze_depth

类型: UInt64

默认值: 5000

解释器执行的最大分析次数。

max_ast_depth

类型: UInt64

默认值: 1000

查询语法树的最大深度。解析后检查。

max_ast_elements

类型: UInt64

默认值: 50000

查询语法树的最大节点数。解析后检查。

max_autoincrement_series

类型: UInt64

默认值: 1000

generateSeriesID 函数创建的系列的数量限制。

由于每个系列表示 Keeper 中的一个节点,因此建议不要超过几百万个。

max_backup_bandwidth

类型: UInt64

默认值: 0

特定备份在服务器上的最大读取速度(以字节/秒为单位)。零表示无限制。

max_block_size

类型: UInt64

默认值: 65409

在 ClickHouse 中,数据通过块处理,块是一组列部分。单个块的内部处理周期高效,但每处理一个块时会产生显著的成本。

max_block_size 设置指示加载数据时单个块中建议的最大行数。块大小为 max_block_size 的数据并不总是从表中加载:如果 ClickHouse 确定需要检索更少的数据,则处理较小的块。

块大小不应过小,以避免每个块处理时产生明显的成本。也不应过大,以确保具有 LIMIT 子句的查询在处理第一个块后迅速执行。在设置 max_block_size 时,目标应避免在多个线程中提取大量列时消耗过多内存,并保持至少一些缓存局部性。

max_bytes_before_external_group_by

类型: UInt64

默认值: 0

如果 GROUP BY 操作期间的内存使用超过此字节阈值,则激活“外部聚合”模式(将数据溢出到磁盘)。建议值是可用系统内存的一半。

max_bytes_before_external_sort

类型: UInt64

默认值: 0

如果 ORDER BY 操作期间的内存使用超过此字节阈值,则激活“外部排序”模式(将数据溢出到磁盘)。建议值是可用系统内存的一半。

max_bytes_before_remerge_sort

类型: UInt64

默认值: 1000000000

在带有 LIMIT 的 ORDER BY 的情况下,当内存使用超过指定阈值时,在最终合并之前执行额外的合并步骤,以仅保留顶部的 LIMIT 行。

max_bytes_in_distinct

类型: UInt64

默认值: 0

执行 DISTINCT 时状态的最大总大小(以未压缩字节为单位)。

max_bytes_in_join

类型: UInt64

默认值: 0

JOIN 的哈希表的最大大小(以内存中的字节数为单位)。

max_bytes_in_set

类型: UInt64

默认值: 0

从执行 IN 部分中生成的集合的最大大小(以内存中的字节为单位)。

max_bytes_ratio_before_external_group_by

类型: Double

默认值: 0.5

激活外部 GROUP BY 前使用的内存比率。如果将其设置为 0.6,当内存使用达到查询允许的内存的 60% 时,将使用外部 GROUP BY。

max_bytes_ratio_before_external_sort

类型: Double

默认值: 0.5

激活外部 ORDER BY 前使用的内存比率。如果将其设置为 0.6,当内存使用达到查询允许的内存的 60% 时,将使用外部 ORDER BY。

max_bytes_to_read

类型: UInt64

默认值: 0

限制从最“深”源读取的字节数(解压后)。即,仅在最深的子查询中。当从远程服务器读取时,仅在远程服务器上检查。

max_bytes_to_read_leaf

类型: UInt64

默认值: 0

限制在分布式查询的叶节点上读取的字节数(解压后)。限制仅适用于本地读取,不包括根节点上的最终合并阶段。请注意,此设置在 prefer_localhost_replica=1 时不稳定。

max_bytes_to_sort

类型: UInt64

默认值: 0

如果在 ORDER BY 操作中必须处理的(未压缩)字节数超过指定数量,则行为将由 sort_overflow_mode 确定,默认情况下是 - 抛出异常。

max_bytes_to_transfer

类型: UInt64

默认值: 0

执行 GLOBAL IN/JOIN 部分时传输的外部表的最大大小(以未压缩字节为单位)。

max_columns_to_read

类型: UInt64

默认值: 0

如果查询需要读取超过指定列数,则抛出异常。零值表示无限制。此设置有助于防止过于复杂的查询。

max_compress_block_size

类型: UInt64

默认值: 1048576

在将未压缩数据压缩以写入表之前,块的最大大小。默认值为 1,048,576(1 MiB)。指定较小的块大小通常会略微降低压缩率,压缩和解压缩速度略有提高,因为缓存局部性得到改善,内存消耗也减少。

备注

这是一个高级设置,如果您刚刚开始使用 ClickHouse,则不应更改此设置。

请勿混淆压缩块(由字节组成的内存块)与查询处理块(来自表的一组行)。

max_concurrent_queries_for_all_users

类型: UInt64

默认值: 0

如果此设置的值小于或等于当前同时处理的查询数量,则抛出异常。

示例:max_concurrent_queries_for_all_users 可以设置为 99,对于所有用户,数据库管理员可以将其设置为 100,以便在服务器过载时执行调查查询。

修改一个查询或用户的设置不会影响其他查询。

可能的值:

  • 正整数。
  • 0 — 不限制。

示例

另请参见

max_concurrent_queries_for_user

类型: UInt64

默认值: 0

每个用户同时处理的最大查询数量。

可能的值:

  • 正整数。
  • 0 — 不限制。

示例

max_distributed_connections

类型: UInt64

默认值: 1024

在向单个分布式表执行单个查询时,与远程服务器的最大同时连接数量。我们建议设置不小于集群中的服务器数量。

以下参数仅在创建分布式表(以及启动服务器)时使用,因此在运行时没有理由更改它们。

max_distributed_depth

类型: UInt64

默认值: 5

限制对 Distributed 表的递归查询的最大深度。

如果超出该值,服务器会抛出异常。

可能的值:

  • 正整数。
  • 0 — 无限制深度。

max_download_buffer_size

类型: UInt64

默认值: 10485760

每个线程并行下载(例如,针对 URL 引擎)的最大缓冲区大小。

max_download_threads

类型: MaxThreads

默认值: 4

用于下载数据的最大线程数量(例如,针对 URL 引擎)。

max_estimated_execution_time

类型: Seconds

默认值: 0

最大查询估计执行时间(以秒为单位)。

max_execution_speed

类型: UInt64

默认值: 0

每秒最大执行行数。

max_execution_speed_bytes

类型: UInt64

默认值: 0

每秒最大执行字节数。

max_execution_time

类型: Seconds

默认值: 0

如果查询运行时间超过指定的秒数,则行为将由 timeout_overflow_mode 确定,默认情况下是 - 抛出异常。请注意,在数据处理过程中检查超时,查询仅在指定位置停止。此设置的实际运行时间将高于该值。

max_execution_time_leaf

类型: Seconds

默认值: 0

语义类似于 max_execution_time,但仅适用于分布式查询的叶节点,超时行为将由 timeout_overflow_mode_leaf 确定,默认情况下是 - 抛出异常。

max_expanded_ast_elements

类型: UInt64

默认值: 500000

在扩展别名和星号后,查询语法树的最大节点数。

max_fetch_partition_retries_count

类型: UInt64

默认值: 5

从另一个主机获取分区时的重试次数。

max_final_threads

类型: MaxThreads

默认值: 'auto(14)'

设置带有 FINAL 修饰符的 SELECT 查询数据读取阶段的最大并行线程数。

可能的值:

  • 正整数。
  • 0 或 1 - 禁用。SELECT 查询在单线程中执行。

max_http_get_redirects

类型: UInt64

默认值: 0

允许的 HTTP GET 重定向跳数的最大数量。确保采取额外的安全措施,以防止恶意服务器将您的请求重定向到意外服务。\n\n当外部服务器重定向到另一个地址,但该地址似乎属于公司基础架构时,就会出现这种情况,通过向内部服务器发送 HTTP 请求,您可以从内部网络请求内部 API,绕过身份验证,甚至查询其他服务,例如 Redis 或 Memcached。当您没有内部基础架构(包括在您的 localhost 上运行的某些内容)或信任服务器时,允许重定向是安全的。不过请记住,如果 URL 使用 HTTP 而不是 HTTPS,您必须信任不仅是远程服务器,而且还有您的 ISP 以及中间的每个网络。

max_hyperscan_regexp_length

类型: UInt64

默认值: 0

定义在 hyperscan 多匹配函数 中每个正则表达式的最大长度。

可能的值:

  • 正整数。
  • 0 - 长度不限制。

示例

查询:

结果:

查询:

结果:

另请参见

max_hyperscan_regexp_total_length

类型: UInt64

默认值: 0

设置每个 hyperscan 多匹配函数 中所有正则表达式的最大总长度。

可能的值:

  • 正整数。
  • 0 - 长度不限制。

示例

查询:

结果:

查询:

结果:

另请参见

max_insert_block_size

类型: UInt64

默认值: 1048449

要形成插入到表中的数据块的行数大小。 此设置仅适用于服务器形成块的情况。 例如,针对 HTTP 接口的 INSERT,服务器解析数据格式并形成指定大小的块。 但在使用 clickhouse-client 时,客户端自己解析数据,服务器上的 max_insert_block_size 设置不会影响插入块的大小。 在使用 INSERT SELECT 时,该设置也没有意义,因为数据是通过 SELECT 后形成的相同块插入的。

默认值稍大于 max_block_size。这样做的原因是某些表引擎(*MergeTree)为每个插入的块在磁盘上形成数据部分,这是一个相当大的实体。同样,*MergeTree 表在插入期间对数据进行排序,足够大的块大小允许在 RAM 中对更多数据进行排序。

max_insert_delayed_streams_for_parallel_write

类型: UInt64

默认值: 0

延迟最终部分刷新时的最大流(列)数。默认值 - 自动(1000,以防底层存储支持并行写入,否则为禁用)。

max_insert_threads

类型: UInt64

默认值: 0

执行 INSERT SELECT 查询的最大线程数量。

可能的值:

  • 0(或 1) — INSERT SELECT 不并行执行。
  • 正整数,大于 1。

云默认值:从 24,具体取决于服务大小。

并行 INSERT SELECT 仅在 SELECT 部分并行执行时效果显著,请参阅 max_threads 设置。 较高的值会导致更高的内存使用。

max_joined_block_size_rows

类型: UInt64

默认值: 65409

JOIN 结果的最大块大小(如果连接算法支持)。 0 表示无限制。

max_limit_for_ann_queries

Experimental feature. Learn more.

类型: UInt64

默认值: 1000000

LIMIT 大于此设置的 SELECT 查询无法使用向量相似性索引。帮助防止向量相似性索引中的内存溢出。

max_live_view_insert_blocks_before_refresh

Experimental feature. Learn more.

类型: UInt64

默认值: 64

限制插入块的最大数量,在此之后可合并的块将被丢弃并重新执行查询。

max_local_read_bandwidth

类型: UInt64

默认值: 0

本地读取的最大速度(以字节/秒为单位)。

max_local_write_bandwidth

类型: UInt64

默认值: 0

本地写入的最大速度(以字节/秒为单位)。

max_memory_usage

类型: UInt64

默认值: 0

处理单个查询的最大内存使用量。零表示无限制。

max_memory_usage_for_user

类型: UInt64

默认值: 0

处理用户所有并发运行的查询的最大内存使用量。零表示无限制。

max_network_bandwidth

类型: UInt64

默认值: 0

限制以字节/秒为单位的网络数据交换速度。此设置适用于每个查询。

可能的值:

  • 正整数。
  • 0 — 禁用带宽控制。

max_network_bandwidth_for_all_users

类型: UInt64

默认值: 0

限制以字节/秒为单位的网络数据交换速度。此设置适用于服务器上所有并发运行的查询。

可能的值:

  • 正整数。
  • 0 — 禁用数据速度控制。

max_network_bandwidth_for_user

类型: UInt64

默认值: 0

限制以字节/秒为单位的网络数据交换速度。此设置适用于单个用户执行的所有并发查询。

可能的值:

  • 正整数。
  • 0 — 禁用数据速度控制。

max_network_bytes

类型: UInt64

默认值: 0

限制在执行查询时通过网络接收或传输的数据量(以字节为单位)。此设置适用于每个单独查询。

可能的值:

  • 正整数。
  • 0 — 禁用数据量控制。

max_number_of_partitions_for_independent_aggregation

类型: UInt64

默认值: 128

应用优化的表中的最大分区数量。

max_parallel_replicas

类型: NonZeroUInt64

默认值: 1000

在执行查询时,每个分片的最大副本数量。

可能的值:

  • 正整数。

附加信息

此选项将根据所使用的设置生成不同的结果。

备注

当涉及连接或子查询时,此设置将生成不正确的结果,并且所有表不符合某些要求。有关详细信息,请参阅 Distributed Subqueries and max_parallel_replicas

使用 SAMPLE 键的并行处理

如果一个查询在多个服务器上并行执行,它可能会更快。但在以下情况下,查询性能可能会下降:

  • 采样键在分区键中的位置不允许高效的范围扫描。
  • 将采样键添加到表会降低基于其他列的过滤效率。
  • 采样键是计算成本高昂的表达式。
  • 集群延迟分布具有长尾,因此查询更多服务器会增加查询的整体延迟。

使用 parallel_replicas_custom_key 的并行处理

此设置适用于任何 replicated 表。

max_parser_backtracks

类型: UInt64

默认值: 1000000

最大解析器回溯次数(它在递归下降解析过程中尝试不同替代方案的次数)。

max_parser_depth

类型: UInt64

默认值: 1000

限制递归下降解析器的最大递归深度。允许控制栈大小。

可能的值:

  • 正整数。
  • 0 — 递归深度无限制。

max_parsing_threads

类型: MaxThreads

默认值: 'auto(14)'

在支持并行解析的输入格式中解析数据的最大线程数。默认情况下,它是自动确定的。

max_partition_size_to_drop

类型: UInt64

默认值: 50000000000

查询时删除分区的限制。值为 0 意味着您可以不受限制地删除分区。

云默认值: 1 TB。

备注

此查询设置覆盖其服务器设置的对应值,请参阅 max_partition_size_to_drop

max_partitions_per_insert_block

类型: UInt64

默认值: 100

限制单个 INSERT 的块中的最大分区数量。零表示无限。如果块包含过多分区,则抛出异常。此设置是安全阈值,因为使用大量分区是一种常见的误解。

max_partitions_to_read

类型: Int64

默认值: -1

限制在一次查询中可以访问的最大分区数量。 <= 0 意味着无限制。

max_parts_to_move

类型: UInt64

默认值: 1000

限制在一次查询中可以移动的部分数量。零表示无限制。

max_query_size

类型: UInt64

默认值: 262144

SQL 解析器解析的查询字符串的最大字节数。INSERT 查询的 VALUES 子句中的数据通过单独的流解析器进行处理(消耗 O(1) RAM),不受此限制的影响。

备注

max_query_size 不能在 SQL 查询中设置(例如,SELECT now() SETTINGS max_query_size=10000),因为 ClickHouse 需要分配一个缓冲区来解析查询,而该缓冲区的大小由 max_query_size 设置决定,必须在查询执行之前进行配置。

max_read_buffer_size

类型: UInt64

默认值: 1048576

从文件系统读取的缓冲区的最大大小。

max_read_buffer_size_local_fs

类型: UInt64

默认值: 131072

从本地文件系统读取的缓冲区的最大大小。如果设置为 0,则使用 max_read_buffer_size。

max_read_buffer_size_remote_fs

类型: UInt64

默认值: 0

从远程文件系统读取的缓冲区的最大大小。如果设置为 0,则使用 max_read_buffer_size。

max_recursive_cte_evaluation_depth

类型: UInt64

默认值: 1000

递归 CTE 评估深度的最大限制。

max_remote_read_network_bandwidth

类型: UInt64

默认值: 0

读取时网络中数据交换的最大速度,单位为字节每秒。

max_remote_write_network_bandwidth

类型: UInt64

默认值: 0

写入时网络中数据交换的最大速度,单位为字节每秒。

max_replica_delay_for_distributed_queries

类型: UInt64

默认值: 300

禁用延迟副本的分布式查询。请参阅 Replication

以秒为单位设置时间。如果副本的延迟大于或等于设定值,则不使用该副本。

可能的值:

  • 正整数。
  • 0 — 不检查副本延迟。

要防止使用具有非零延迟的任何副本,请将此参数设置为 1。

用于从指向复制表的分布式表执行 SELECT 时。

max_result_bytes

类型: UInt64

默认值: 0

结果大小的限制,单位为字节(未压缩)。如果满足阈值,在处理数据块后查询将停止,但不会剪切结果的最后一个块,因此结果大小可能会超过阈值。注意:结果在内存中的大小被计算在此阈值内。即使结果大小很小,它可能会在内存中引用更大的数据结构,代表 LowCardinality 列的字典,以及 AggregateFunction 列的 Arena,因此尽管结果大小较小,阈值也可能会被超过。该设置相当低级,使用时需谨慎。

max_result_rows

类型: UInt64

默认值: 0

结果大小的限制,单位为行。若满足阈值,在处理数据块后查询将停止,但不会剪切结果的最后一个块,因此结果大小可能会超过阈值。

max_rows_in_distinct

类型: UInt64

默认值: 0

执行 DISTINCT 时的最大元素数量。

max_rows_in_join

类型: UInt64

默认值: 0

JOIN 的哈希表的最大大小(以行数计)。

max_rows_in_set

类型: UInt64

默认值: 0

执行 IN 部分后,得到的集合的最大大小(以元素数量计)。

max_rows_in_set_to_optimize_join

类型: UInt64

默认值: 0

在联合前通过彼此的行集合过滤的集合的最大大小。

可能的值:

  • 0 — 禁用。
  • 任何正整数。

max_rows_to_group_by

类型: UInt64

默认值: 0

如果在 GROUP BY 中的聚合生成超过指定数量的行(唯一的 GROUP BY 键),则行为将由 group_by_overflow_mode 决定,默认情况下为 - 抛出异常,但也可以切换为近似 GROUP BY 模式。

max_rows_to_read

类型: UInt64

默认值: 0

限制从最“深”的源读取的行数。即,仅在最深的子查询中检查。当从远程服务器读取时,仅在远程服务器上检查。

max_rows_to_read_leaf

类型: UInt64

默认值: 0

限制在分布式查询中在叶节点读取的行数。限制仅适用于本地读取,不包括根节点的最终合并阶段。注意,此设置在 prefer_localhost_replica=1 时不稳定。

max_rows_to_sort

类型: UInt64

默认值: 0

如果必须处理超过指定数量的记录以进行 ORDER BY 操作,则行为将由 sort_overflow_mode 决定,默认情况下为 - 抛出异常。

max_rows_to_transfer

类型: UInt64

默认值: 0

在执行 GLOBAL IN/JOIN 部分时传输的外部表的最大大小(以行数计)。

max_sessions_for_user

类型: UInt64

默认值: 0

用户的最大同时会话数。

max_size_to_preallocate_for_aggregation

类型: UInt64

默认值: 1000000000000

在聚合之前允许在所有哈希表中总共预分配多少个元素的空间。

max_size_to_preallocate_for_joins

类型: UInt64

默认值: 1000000000000

在连接之前允许在所有哈希表中总共预分配多少个元素的空间。

max_streams_for_merge_tree_reading

类型: UInt64

默认值: 0

如果不为零,限制对 MergeTree 表的读取流的数量。

max_streams_multiplier_for_merge_tables

类型: Float

默认值: 5

在从 Merge 表读取时请求更多的流。流将分布在 Merge 表所使用的多个表之间。这允许在多个线程之间更均匀地分配工作,特别是在合并表大小不同的情况下。

max_streams_to_max_threads_ratio

类型: Float

默认值: 1

允许使用的源数量超过线程数 — 使工作在线程之间分布更均匀。假设这是一个临时解决方案,因为将来将有可能使源的数量等于线程的数量,而每个源可以动态选择可用的工作。

max_subquery_depth

类型: UInt64

默认值: 100

如果查询中嵌套子查询的数量超过指定数量,则抛出异常。这可以在一定程度上保护集群用户的查询合理性。

max_table_size_to_drop

类型: UInt64

默认值: 50000000000

查询时删除表的限制。值为 0 意味着您可以删除所有表而不受限制。

云默认值: 1 TB。

备注

此查询设置覆盖其服务器设置的对应值,请参阅 max_table_size_to_drop

max_temporary_columns

类型: UInt64

默认值: 0

如果查询因中间计算而在内存中生成的临时列数超过指定数量,则抛出异常。零值表示无限制。此设置有助于防止查询过于复杂。

max_temporary_data_on_disk_size_for_query

类型: UInt64

默认值: 0

所有并发运行的查询在磁盘上消耗的临时文件的最大数据量(以字节为单位)。零值表示无限制。

max_temporary_data_on_disk_size_for_user

类型: UInt64

默认值: 0

所有并发运行的用户查询在磁盘上消耗的临时文件的最大数据量(以字节为单位)。零值表示无限制。

max_temporary_non_const_columns

类型: UInt64

默认值: 0

类似于 'max_temporary_columns' 设置,但仅适用于非常量列。这是合理的,因为常量列便宜,允许更多。

max_threads

类型: MaxThreads

默认值: 'auto(14)'

查询处理线程的最大数量,不包括从远程服务器检索数据的线程(参见 'max_distributed_connections' 参数)。

此参数适用于并行执行查询处理管道各阶段的线程。例如,在从一个表读取时,如果可以使用至少 'max_threads' 数量的线程并行地评估带有函数的表达式、使用 WHERE 进行过滤并为 GROUP BY 进行预聚合,那么就会使用 'max_threads'。

对于由于 LIMIT 而快速完成的查询,可以设置较低的 'max_threads'。例如,如果所需的条目位于每个块中且 max_threads = 8,则将检索 8 个块,尽管只读取一个就足够。

max_threads 值越小,消耗的内存越少。

max_threads_for_indexes

类型: UInt64

默认值: 0

处理索引的最大线程数。

max_untracked_memory

类型: UInt64

默认值: 4194304

小的分配和释放在线程本地变量中进行分组,并仅在数量(绝对值)超过指定值时进行跟踪或分析。如果该值高于 'memory_profiler_step',它将被有效地降低到 'memory_profiler_step'。

memory_overcommit_ratio_denominator

类型: UInt64

默认值: 1073741824

这表示在全局层面达到硬限制时的软内存限制。此值用于计算查询的过量分配比例。零值表示跳过查询。有关 内存过量分配 的更多信息。

memory_overcommit_ratio_denominator_for_user

类型: UInt64

默认值: 1073741824

这表示在用户级别达到硬限制时的软内存限制。此值用于计算查询的过量分配比例。零值表示跳过查询。有关 内存过量分配 的更多信息。

memory_profiler_sample_max_allocation_size

类型: UInt64

默认值: 0

以与 memory_profiler_sample_probability 相等的概率收集小于或等于指定值的随机分配。值为 0 意味着禁用。您可能希望将 'max_untracked_memory' 设置为 0,以使此阈值按预期工作。

memory_profiler_sample_min_allocation_size

类型: UInt64

默认值: 0

以与 memory_profiler_sample_probability 相等的概率收集大于或等于指定值的随机分配。值为 0 意味着禁用。您可能希望将 'max_untracked_memory' 设置为 0,以使此阈值按预期工作。

memory_profiler_sample_probability

类型: Float

默认值: 0

收集随机分配和释放,并将其写入 system.trace_log,带有 'MemorySample' trace_type。评分是针对每次分配/释放的,无论分配的大小如何(可以通过 memory_profiler_sample_min_allocation_sizememory_profiler_sample_max_allocation_size 进行更改)。注意,只有当未跟踪的内存量超过 'max_untracked_memory' 时,才会进行采样。您可能希望将 'max_untracked_memory' 设置为 0 以获得额外精细的采样。

memory_profiler_step

类型: UInt64

默认值: 4194304

设置内存分析师的步长。每当查询内存使用量超过每个字节的下一个步长时,内存分析师将收集分配的堆栈跟踪并将其写入 trace_log

可能的值:

  • 正整数。

  • 0 以关闭内存分析师。

memory_tracker_fault_probability

类型: Float

默认值: 0

用于 exception safety 的测试 - 每次分配内存时都会抛出异常,概率为指定值。

memory_usage_overcommit_max_wait_microseconds

类型: UInt64

默认值: 5000000

在用户级别的内存过量分配的情况下,线程等待释放内存的最大时间。如果超时且内存尚未释放,则会抛出异常。有关 内存过量分配 的更多信息。

merge_table_max_tables_to_look_for_schema_inference

类型: UInt64

默认值: 1000

在创建没有显式模式的 Merge 表时,或在使用 merge 表函数时,推导不超过指定数量匹配表的模式。如果表的数量较多,则仅从指定数量的表中推导模式。

merge_tree_coarse_index_granularity

类型: UInt64

默认值: 8

在查找数据时,ClickHouse 检查索引文件中的数据标记。如果 ClickHouse 发现所需键位于某个范围内,则它会将此范围划分为 merge_tree_coarse_index_granularity 个子范围,并在那里递归查找所需键。

可能的值:

  • 任何正偶数。

merge_tree_compact_parts_min_granules_to_multibuffer_read

ClickHouse Cloud only

类型: UInt64

默认值: 16

仅在 ClickHouse Cloud 中有效。合并树表的紧凑部分条带中的粒子数,以使用多缓冲读取器,该读取器支持并行读取和预读。在远程文件系统中读取时,使用多缓冲读取器将增加读取请求的数量。

merge_tree_determine_task_size_by_prewhere_columns

类型: Bool

默认值: 1

是否仅根据预处理列的大小来确定读取任务的大小。

merge_tree_max_bytes_to_use_cache

类型: UInt64

默认值: 2013265920

如果 ClickHouse 在一个查询中需要读取超过 merge_tree_max_bytes_to_use_cache 字节,则不会使用未压缩块的缓存。

未压缩块的缓存存储为查询提取的数据。ClickHouse 使用此缓存来加速对重复的小查询的响应。此设置可防止通过读取大量数据的查询对缓存进行垃圾处理。uncompressed_cache_size 服务器设置定义了未压缩块缓存的大小。

可能的值:

  • 任何正整数。

merge_tree_max_rows_to_use_cache

类型: UInt64

默认值: 1048576

如果 ClickHouse 在一个查询中需要读取超过 merge_tree_max_rows_to_use_cache 行,则不会使用未压缩块的缓存。

未压缩块的缓存存储为查询提取的数据。ClickHouse 使用此缓存来加速对重复的小查询的响应。此设置可防止通过读取大量数据的查询对缓存进行垃圾处理。uncompressed_cache_size 服务器设置定义了未压缩块缓存的大小。

可能的值:

  • 任何正整数。

merge_tree_min_bytes_for_concurrent_read

类型: UInt64

默认值: 251658240

如果从 MergeTree 引擎表的单个文件中读取的字节数超过 merge_tree_min_bytes_for_concurrent_read,则 ClickHouse 尝试在多个线程中同时读取此文件。

可能的值:

  • 正整数。

merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem

类型: UInt64

默认值: 0

在从远程文件系统读取时,读取一个文件前的字节数的最小值,此时 MergeTree 引擎可以并行化读取。我们不建议使用此设置。

可能的值:

  • 正整数。

merge_tree_min_bytes_for_seek

类型: UInt64

默认值: 0

如果在一个文件中要读取的两个数据块之间的距离小于 merge_tree_min_bytes_for_seek 字节,则 ClickHouse 会顺序读取包含两个块的文件范围,从而避免额外的寻址。

可能的值:

  • 任何正整数。

merge_tree_min_bytes_per_task_for_remote_reading

类型: UInt64

默认值: 2097152

每个任务的最小读取字节数。

merge_tree_min_read_task_size

类型: UInt64

默认值: 8

任务大小的硬下限(即使颗粒数较少且可用线程数较多,也不会分配较小的任务)。

merge_tree_min_rows_for_concurrent_read

类型: UInt64

默认值: 163840

如果从 MergeTree 表文件读取的行数超过 merge_tree_min_rows_for_concurrent_read,则 ClickHouse 尝试在多个线程中并发地读取此文件。

可能的值:

  • 正整数。

merge_tree_min_rows_for_concurrent_read_for_remote_filesystem

类型: UInt64

默认值: 0

在从远程文件系统读取时,读取一个文件前的行数的最小值,此时 MergeTree 引擎可以并行化读取。我们不建议使用此设置。

可能的值:

  • 正整数。

merge_tree_min_rows_for_seek

类型: UInt64

默认值: 0

如果在一个文件中要读取的两个数据块之间的距离小于 merge_tree_min_rows_for_seek 行,则 ClickHouse 不会在文件中寻址,而是顺序读取数据。

可能的值:

  • 任何正整数。

merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_injection_probability

类型: Float

默认值: 0

用于 PartsSplitter 的测试 - 在每次从 MergeTree 读取时,以指定概率将读取范围分成相交和不相交。

merge_tree_use_const_size_tasks_for_remote_reading

类型: Bool

默认值: 1

是否使用常量大小的任务从远程表中读取。

merge_tree_use_deserialization_prefixes_cache

类型: Bool

默认值: 1

在从 MergeTree 的 Wide 部分读取时启用从文件前缀缓存列元数据。

merge_tree_use_prefixes_deserialization_thread_pool

类型: Bool

默认值: 1

启用在 MergeTree 的 Wide 部分中并行读取前缀的线程池。该线程池的大小由服务器设置 max_prefixes_deserialization_thread_pool_size 控制。

merge_tree_use_v1_object_and_dynamic_serialization

类型: Bool

默认值: 0

启用后,MergeTree 中将使用 JSON 和 Dynamic 类型的 V1 序列化版本,而不是 V2。更改此设置仅在服务器重启后生效。

metrics_perf_events_enabled

类型: Bool

默认值: 0

如果启用,则在查询执行过程中将测量某些性能事件。

metrics_perf_events_list

类型: String

默认值:

逗号分隔的性能度量列表,将在查询执行过程中测量。为空则表示所有事件。有关可用事件,请参阅源代码中的 PerfEventInfo。

min_bytes_to_use_direct_io

类型: UInt64

默认值: 0

使用直接 I/O 访问存储磁盘所需的最小数据量。

ClickHouse 在从表中读取数据时使用此设置。如果要读取的数据的总存储量超过 min_bytes_to_use_direct_io 字节,则 ClickHouse 将使用 O_DIRECT 选项从存储磁盘读取数据。

可能的值:

  • 0 — 禁用直接 I/O。
  • 正整数。

min_bytes_to_use_mmap_io

类型: UInt64

默认值: 0

这是一个实验性设置。设置在不使用内核到用户空间的数据复制的情况下读取大文件所需的最小内存。建议的阈值约为 64 MB,因为 mmap/munmap 速度较慢。仅在大文件上有意义,并且仅在数据位于页面缓存中时有帮助。

可能的值:

  • 正整数。
  • 0 — 大文件的读取仅靠内核到用户空间的数据复制。

min_chunk_bytes_for_parallel_parsing

类型: NonZeroUInt64

默认值: 10485760

  • 类型: 无符号整数
  • 默认值: 1 MiB

每个线程并行解析的最小块大小(以字节为单位)。

min_compress_block_size

类型: UInt64

默认值: 65536

对于 MergeTree 表。为了在处理查询时减少延迟,如果在写入下一个标记时块的大小至少为 min_compress_block_size,则会压缩块。默认为 65,536。

如果未压缩数据的实际大小小于 max_compress_block_size,则块的实际大小不小于此值,并且不小于一个标记的数据量。

让我们看一个示例。假设在创建表期间将 index_granularity 设置为 8192。

我们写入一个 UInt32 类型的列(每个值 4 字节)。写入 8192 行时,总共将是 32 KB 的数据。由于 min_compress_block_size = 65,536,因此每两个标记形成一个压缩块。

我们写入一个 URL 列,其类型为 String(每个值平均大小为 60 字节)。写入 8192 行时,平均将少于 500 KB 的数据。由于这超过了 65,536,因此每个标记形成一个压缩块。在这种情况下,从磁盘中读取单个标记的范围时,不会解压额外数据。

备注

这是一个专家级别的设置,如果您刚开始使用 ClickHouse,不应更改它。

min_count_to_compile_aggregate_expression

类型: UInt64

默认值: 3

开始 JIT 编译所需的相同聚合表达式的最小数量。仅在启用 compile_aggregate_expressions 设置时有效。

可能的值:

  • 正整数。
  • 0 — 相同的聚合表达式始终进行 JIT 编译。

min_count_to_compile_expression

类型: UInt64

默认值: 3

在编译之前执行相同表达式所需的最小数量。

min_count_to_compile_sort_description

类型: UInt64

默认值: 3

在进行 JIT 编译之前所需的相同排序描述的数量。

min_execution_speed

类型: UInt64

默认值: 0

每秒的最小执行行数。

min_execution_speed_bytes

类型: UInt64

默认值: 0

每秒的最小执行字节数。

min_external_sort_block_bytes

类型: UInt64

默认值: 104857600

外部排序中转储到磁盘的最小块大小,以避免生成过多文件。

min_external_table_block_size_bytes

类型: UInt64

默认值: 268402944

如果块不够大,将外部表传递给指定大小的块。

min_external_table_block_size_rows

类型: UInt64

默认值: 1048449

如果块不够大,将外部表传递给指定大小的行数。

min_free_disk_bytes_to_perform_insert

类型: UInt64

默认值: 0

执行插入所需的最小可用磁盘空间字节数。

min_free_disk_ratio_to_perform_insert

类型: Float

默认值: 0

执行插入所需的最小可用磁盘空间比例。

min_free_disk_space_for_temporary_data

类型: UInt64

默认值: 0

在进行外部排序和聚合时,写入临时数据时应保留的最小磁盘空间。

min_hit_rate_to_use_consecutive_keys_optimization

类型: Float

默认值: 0.5

在聚合中使用连续键优化的缓存的最小命中率,以将其保持启用状态。

min_insert_block_size_bytes

类型: UInt64

默认值: 268402944

INSERT 查询可以插入到表中的块设置的最小字节数。较小的块将压缩成更大的块。

可能的值:

  • 正整数。
  • 0 — 禁用压缩。

min_insert_block_size_bytes_for_materialized_views

类型: UInt64

默认值: 0

INSERT 查询可以插入到表中的块设置的最小字节数。较小的块将压缩成更大的块。该设置仅适用于插入到 物化视图 的块。通过调整该设置,您可以控制插入到物化视图时的块压缩,并避免过度使用内存。

可能的值:

  • 任何正整数。
  • 0 — 禁用压缩。

另请参见

min_insert_block_size_rows

类型: UInt64

默认值: 1048449

INSERT 查询可以插入到表中的块设置的最小行数。较小的块将压缩成更大的块。

可能的值:

  • 正整数。
  • 0 — 禁用压缩。

查询:

结果:

opentelemetry_start_trace_probability

Type: Float

Default value: 0

设置 ClickHouse 可以为执行的查询启动跟踪的概率(如果没有提供父 trace context)。

Possible values:

  • 0 — 禁用所有执行查询的跟踪(如果没有提供父跟踪上下文)。
  • 介于 [0..1] 之间的正浮点数。例如,如果设置值为 0.5,则 ClickHouse 平均可以为一半的查询启动跟踪。
  • 1 — 启用所有执行查询的跟踪。

opentelemetry_trace_processors

Type: Bool

Default value: 0

收集 OpenTelemetry 处理器的跨度。

optimize_aggregation_in_order

Type: Bool

Default value: 0

启用在 SELECT 查询中对 GROUP BY 的优化,以便在 MergeTree 表中按相应顺序聚合数据。

Possible values:

  • 0 — 禁用 GROUP BY 优化。
  • 1 — 启用 GROUP BY 优化。

See Also

optimize_aggregators_of_group_by_keys

Type: Bool

Default value: 1

消除 SELECT 部分中 GROUP BY 键的 min/max/any/anyLast 聚合器。

optimize_and_compare_chain

Type: Bool

Default value: 1

在 AND 链中填充常量比较,以增强过滤能力。支持操作符 <<=>>== 及其混合。例如,(a < b) AND (b < c) AND (c < 5) 将变为 (a < b) AND (b < c) AND (c < 5) AND (b < 5) AND (a < 5)

optimize_append_index

Type: Bool

Default value: 0

使用 约束 以追加索引条件。默认值为 false

Possible values:

  • true, false

optimize_arithmetic_operations_in_aggregate_functions

Type: Bool

Default value: 1

将算术运算移出聚合函数。

optimize_count_from_files

Type: Bool

Default value: 1

启用或禁用从不同输入格式的文件中计数行数的优化。适用于 file / s3 / url / hdfs / azureBlobStorage 的表函数/引擎。

Possible values:

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

optimize_distinct_in_order

Type: Bool

Default value: 1

如果某些列在 DISTINCT 中形成了排序的前缀,则启用 DISTINCT 优化。例如,合并树中排序键的前缀或 ORDER BY 声明。

optimize_distributed_group_by_sharding_key

Type: Bool

Default value: 1

优化 GROUP BY sharding_key 查询,通过避免在发起者服务器上进行昂贵的聚合(这样可以减少发起者服务器上的查询内存使用)。

支持以下类型的查询(以及它们的所有组合):

  • SELECT DISTINCT [..., ]sharding_key[, ...] FROM dist
  • SELECT ... FROM dist GROUP BY sharding_key[, ...]
  • SELECT ... FROM dist GROUP BY sharding_key[, ...] ORDER BY x
  • SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1
  • SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1 BY x

不支持以下类型的查询(某些查询的支持可能会稍后添加):

  • SELECT ... GROUP BY sharding_key[, ...] WITH TOTALS
  • SELECT ... GROUP BY sharding_key[, ...] WITH ROLLUP
  • SELECT ... GROUP BY sharding_key[, ...] WITH CUBE
  • SELECT ... GROUP BY sharding_key[, ...] SETTINGS extremes=1

Possible values:

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

另请参阅:

备注

目前它需要 optimize_skip_unused_shards (原因是将来可能会默认启用,并且只有在通过分布式表插入数据时,即根据 sharding_key 分配数据时,它才能正常工作)。

optimize_extract_common_expressions

Type: Bool

Default value: 1

允许从 WHERE、PREWHERE、ON、HAVING 和 QUALIFY 表达式中的析取中提取公共表达式。类似于 (A AND B) OR (A AND C) 的逻辑表达式可以重写为 A AND (B OR C),这可能有助于利用:

  • 简单过滤表达式中的索引
  • 交叉到内连接优化

optimize_functions_to_subcolumns

Type: Bool

Default value: 1

启用或禁用通过将某些函数转换为读取子列进行优化。这减少了待读取的数据量。

可以转换的函数包括:

Possible values:

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

optimize_group_by_constant_keys

Type: Bool

Default value: 1

当块中的所有键都是常量时优化 GROUP BY。

optimize_group_by_function_keys

Type: Bool

Default value: 1

消除 GROUP BY 部分中其他键的函数。

optimize_if_chain_to_multiif

Type: Bool

Default value: 0

将 if(cond1, then1, if(cond2, ...)) 链替换为 multiIf。目前对于数字类型没有好处。

optimize_if_transform_strings_to_enum

Type: Bool

Default value: 0

将 If 和 Transform 中的字符串类型参数替换为枚举。默认情况下禁用,因为这会在分布式查询中造成不一致的更改,从而导致查询失败。

optimize_injective_functions_in_group_by

Type: Bool

Default value: 1

在 GROUP BY 部分用其参数替换可注入函数。

optimize_injective_functions_inside_uniq

Type: Bool

Default value: 1

在 uniq*() 函数内部删除一个参数的可注入函数。

optimize_min_equality_disjunction_chain_length

Type: UInt64

Default value: 3

表达式 expr = x1 OR ... expr = xN 的最小长度以进行优化。

optimize_min_inequality_conjunction_chain_length

Type: UInt64

Default value: 3

表达式 expr <> x1 AND ... expr <> xN 的最小长度以进行优化。

optimize_move_to_prewhere

Type: Bool

Default value: 1

SELECT 查询中启用或禁用自动 PREWHERE 优化。

仅在 *MergeTree 表上有效。

Possible values:

  • 0 — 禁用自动 PREWHERE 优化。
  • 1 — 启用自动 PREWHERE 优化。

optimize_move_to_prewhere_if_final

Type: Bool

Default value: 0

SELECT 查询中启用或禁用带有 FINAL 修饰符的自动 PREWHERE 优化。

仅在 *MergeTree 表上有效。

Possible values:

  • 0 — 禁用在带有 FINAL 修饰符的 SELECT 查询中的自动 PREWHERE 优化。
  • 1 — 启用在带有 FINAL 修饰符的 SELECT 查询中的自动 PREWHERE 优化。

See Also

optimize_multiif_to_if

Type: Bool

Default value: 1

将仅有一个条件的 'multiIf' 替换为 'if'。

optimize_normalize_count_variants

Type: Bool

Default value: 1

将在语义上等于 count() 的聚合函数重写为 count()。

optimize_on_insert

Type: Bool

Default value: 1

在插入之前启用或禁用数据转换,仿佛在该块上进行过合并(根据表引擎)。

Possible values:

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

Example

启用和禁用之间的差异:

查询:

结果:

注意,此设置影响 物化视图 的行为。

optimize_or_like_chain

Type: Bool

Default value: 0

优化多个 OR LIKE 为 multiMatchAny。此优化不应默认启用,因为在某些情况下会无视索引分析。

optimize_read_in_order

Type: Bool

Default value: 1

SELECT 查询中启用 ORDER BY 优化,以便从 MergeTree 表中读取数据。

Possible values:

  • 0 — 禁用 ORDER BY 优化。
  • 1 — 启用 ORDER BY 优化。

See Also

optimize_read_in_window_order

Type: Bool

Default value: 1

启用窗口子句中的 ORDER BY 优化,以按相应顺序读取 MergeTree 表中的数据。

optimize_redundant_functions_in_order_by

Type: Bool

Default value: 1

如果其参数也在 ORDER BY 中,则从 ORDER BY 中删除函数。

optimize_respect_aliases

Type: Bool

Default value: 1

如果设置为 true,将在 WHERE/GROUP BY/ORDER BY 中尊重别名,这将有助于分区修剪/副索引/optimize_aggregation_in_order/optimize_read_in_order/optimize_trivial_count。

optimize_rewrite_aggregate_function_with_if

Type: Bool

Default value: 1

当逻辑上等同时,将具有 if 表达式的聚合函数重写为参数。例如,avg(if(cond, col, null)) 可以重写为 avgOrNullIf(cond, col)。这可能会提高性能。

备注

仅支持分析器(enable_analyzer = 1)。

optimize_rewrite_array_exists_to_has

Type: Bool

Default value: 0

在逻辑上等同时将 arrayExists() 函数重写为 has()。例如,arrayExists(x -> x = 1, arr) 可以重写为 has(arr, 1)。

optimize_rewrite_sum_if_to_count_if

Type: Bool

Default value: 1

在逻辑上等同时,将 sumIf() 和 sum(if()) 函数重写为 countIf() 函数。

optimize_skip_merged_partitions

Type: Bool

Default value: 0

启用或禁用优化 OPTIMIZE TABLE ... FINAL 查询,如果只有一个分区,其级别 > 0 并且没有过期的 TTL。

  • OPTIMIZE TABLE ... FINAL SETTINGS optimize_skip_merged_partitions=1

默认情况下,OPTIMIZE TABLE ... FINAL 查询即使没有任何操作,也会重写一个分区。

Possible values:

  • 1 - 启用优化。
  • 0 - 禁用优化。

optimize_skip_unused_shards

Type: Bool

Default value: 0

启用或禁用对具有分片密钥条件的 SELECT 查询的未使用分片跳过(假设数据是通过分片密钥分布的,否则查询将产生不正确的结果)。

Possible values:

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

optimize_skip_unused_shards_limit

Type: UInt64

Default value: 1000

分片密钥值的数量限制,当达到限制时,将关闭 optimize_skip_unused_shards

过多的值可能需要大量处理,而收益值得怀疑,因为如果在 IN (...) 中有大量值,则查询很可能会发送到所有分片。

optimize_skip_unused_shards_nesting

Type: UInt64

Default value: 0

控制 optimize_skip_unused_shards (因此仍然要求 optimize_skip_unused_shards),根据分布式查询的嵌套级别(当您拥有 Distributed 表检查另一个 Distributed 表时)。

Possible values:

  • 0 — 禁用,optimize_skip_unused_shards 始终有效。
  • 1 — 只在第一层启用 optimize_skip_unused_shards
  • 2 — 启用 optimize_skip_unused_shards 直到第二层。

optimize_skip_unused_shards_rewrite_in

Type: Bool

Default value: 1

在查询中重写远程分片的 IN,以排除不属于该分片的值(需要 optimize_skip_unused_shards)。

Possible values:

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

optimize_sorting_by_input_stream_properties

Type: Bool

Default value: 1

通过输入流的排序属性优化排序。

optimize_substitute_columns

Type: Bool

Default value: 0

使用 约束 进行列替换。默认值为 false

Possible values:

  • true, false

optimize_syntax_fuse_functions

Type: Bool

Default value: 0

启用通过相同参数融合聚合函数。将包含至少两个相同参数的 sumcountavg 的查询重写为 sumCount

Possible values:

  • 0 — 不融合具有相同参数的函数。
  • 1 — 融合具有相同参数的函数。

Example

查询:

结果:

optimize_throw_if_noop

Type: Bool

Default value: 0

启用或禁用当 OPTIMIZE 查询未执行任何合并时抛出异常。

默认情况下,如果没有任何操作,OPTIMIZE 返回成功。此设置可让您区分这些情况并在异常消息中获取原因。

Possible values:

  • 1 — 启用抛出异常。
  • 0 — 禁用抛出异常。

optimize_time_filter_with_preimage

Type: Bool

Default value: 1

通过将函数转换为等效比较而优化日期和日期时间谓词,无需转换(例如,toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')。

optimize_trivial_approximate_count_query

Type: Bool

Default value: 0

对支持此估计的存储进行简单计数优化时使用近似值,例如,EmbeddedRocksDB。

Possible values:

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

optimize_trivial_count_query

Type: Bool

Default value: 1

启用或禁用对简单查询 SELECT count() FROM table 的优化,使用来自 MergeTree 的元数据。如果您需要使用行级安全性,请禁用此设置。

Possible values:

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

另请参阅:

optimize_trivial_insert_select

Type: Bool

Default value: 0

优化简单 'INSERT INTO table SELECT ... FROM TABLES' 查询。

optimize_uniq_to_count

Type: Bool

Default value: 1

在子查询具有 distinct 或 group by 子句时,将 uniq 及其变体(除了 uniqUpTo)重写为 count。

optimize_use_implicit_projections

Type: Bool

Default value: 1

自动选择隐式投影以执行 SELECT 查询。

optimize_use_projections

Type: Bool

Default value: 1

在处理 SELECT 查询时启用或禁用 投影 优化。

Possible values:

  • 0 — 禁用投影优化。
  • 1 — 启用投影优化。

optimize_using_constraints

Type: Bool

Default value: 0

用于查询优化的 约束。默认值为 false

Possible values:

  • true, false

os_thread_priority

Type: Int64

Default value: 0

设置执行查询的线程的优先级(nice)。操作系统调度程序在选择每个可用 CPU 核心上运行的下一个线程时会考虑此优先级。

备注

要使用此设置,您需要设置 CAP_SYS_NICE 权限。clickhouse-server 包在安装时会设置它。一些虚拟环境不允许您设置 CAP_SYS_NICE 权限。在这种情况下,clickhouse-server 会在启动时显示一条消息。

Possible values:

  • 您可以在 [-20, 19] 范围内设置值。

较低的值意味着更高的优先级。具有较低 nice 优先级值的线程比具有高值的线程执行频率更高。对于长时间运行的非交互式查询,较高的值是可取的,因为它允许这些查询在到达时快速放弃资源,以便为短时交互式查询腾出空间。

output_format_compression_level

Type: UInt64

Default value: 3

如果查询输出被压缩,则默认压缩级别。当 SELECT 查询具有 INTO OUTFILE 时应用此设置,或在写入表函数 fileurlhdfss3azureBlobStorage 时。

Possible values: 从 122

output_format_compression_zstd_window_log

Type: UInt64

Default value: 0

当输出压缩方法为 zstd 时可以使用。如果大于 0,则该设置显式设置压缩窗口大小(2 的幂),并为 zstd 压缩启用长范围模式。这可以帮助实现更好的压缩比。

Possible values: 非负数。注意,如果值太小或太大,zstdlib 将抛出异常。典型值从 20(窗口大小 = 1MB)到 30(窗口大小 = 1GB)。

output_format_parallel_formatting

Type: Bool

Default value: 1

启用或禁用数据格式的并行格式化。仅支持 TSVTSKVCSVJSONEachRow 格式。

Possible values:

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

page_cache_inject_eviction

Type: Bool

Default value: 0

用户空间页面缓存将随机无效化某些页面。用于测试。

结果:

查询:

结果:

prefer_external_sort_block_bytes

类型: UInt64

默认值: 16744704

优先最大块字节数用于外部排序,从而减少合并时的内存使用。

prefer_global_in_and_join

类型: Bool

默认值: 0

启用使用 GLOBAL IN / GLOBAL JOIN 替换 IN / JOIN 操作符。

可能的值:

  • 0 — 禁用。IN / JOIN 操作符不被替换为 GLOBAL IN / GLOBAL JOIN
  • 1 — 启用。IN / JOIN 操作符被替换为 GLOBAL IN / GLOBAL JOIN

用法

尽管 SET distributed_product_mode=global 可以改变分布式表的查询行为,但它不适用于本地表或来自外部资源的表。这是 prefer_global_in_and_join 设置发挥作用的时候。

例如,我们有服务节点的查询,里面包含不适合分布的本地表。我们需要在分布处理期间动态地分散它们的数据,使用 GLOBAL 关键字 — GLOBAL IN / GLOBAL JOIN

prefer_global_in_and_join 的另一个用例是访问由外部引擎创建的表。此设置帮助减少在联接这些表时对外部源的调用次数:每个查询只需一次调用。

另见:

prefer_localhost_replica

类型: Bool

默认值: 1

启用/禁用处理分布式查询时首选使用 localhost 副本。

可能的值:

  • 1 — 如果存在,ClickHouse 始终将查询发送到 localhost 副本。
  • 0 — ClickHouse 使用 load_balancing 设置指定的平衡策略。
备注

如果您使用 max_parallel_replicas 而没有 parallel_replicas_custom_key,则应禁用此设置。 如果设置了 parallel_replicas_custom_key,仅当在包含多个副本的多个分片的集群上使用时才禁用此设置。 如果在单个分片和多个副本的集群上使用,则禁用此设置会产生负面影响。

prefer_warmed_unmerged_parts_seconds

ClickHouse Cloud only

类型: Int64

默认值: 0

仅在 ClickHouse Cloud 中有效。如果合并部分的年龄小于规定的秒数且尚未预热(见 cache_populated_by_fetch),但其所有源部分都是可用的并且已预热,则 SELECT 查询将优先读取那些部分。仅适用于 Replicated-/SharedMergeTree。请注意,这仅检查 CacheWarmer 是否处理了该部分;如果部分是由其他内容获取到缓存中的,它仍将被视为冷部分,直到 CacheWarmer 处理它;如果它被加热,然后从缓存中驱逐,它仍将被视为热部分。

preferred_block_size_bytes

类型: UInt64

默认值: 1000000

此设置调整查询处理的数据块大小,并代表对粗略的 max_block_size 设置的额外微调。如果列较大,并且使用 ‘max_block_size’ 行,则块大小可能会大于指定的字节数,则将其大小降低以改善 CPU 缓存的局部性。

preferred_max_column_in_block_size_bytes

类型: UInt64

默认值: 0

读取时块中的最大列大小的限制。帮助减少缓存未命中的数量。应接近 L2 缓存的大小。

preferred_optimize_projection_name

类型: String

默认值:

如果设置为非空字符串,ClickHouse 将尝试在查询中应用指定的投影。

可能的值:

  • 字符串:首选投影的名称。

prefetch_buffer_size

类型: UInt64

默认值: 1048576

从文件系统读取的预取缓冲区的最大大小。

类型: Bool

默认值: 1

允许以美观的方式打印嵌套类型名称,在 DESCRIBE 查询和 toTypeName() 函数中缩进。

示例:

priority

类型: UInt64

默认值: 0

查询的优先级。1 - 最高,值越高 - 优先级越低;0 - 不使用优先级。

push_external_roles_in_interserver_queries

类型: Bool

默认值: 1

启用在执行查询时将用户角色从发起者推送到其他节点。

query_cache_compress_entries

类型: Bool

默认值: 1

压缩 query cache 中的条目。减少查询缓存的内存消耗,但增加写入到/从中读取的速度。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_cache_max_entries

类型: UInt64

默认值: 0

当前用户可以存储在 query cache 中的查询结果的最大数量。0 表示无限制。

可能的值:

  • 正整数 >= 0。

query_cache_max_size_in_bytes

类型: UInt64

默认值: 0

当前用户可以在 query cache 中分配的最大内存(以字节为单位)。0 表示无限制。

可能的值:

  • 正整数 >= 0。

query_cache_min_query_duration

类型: 毫秒

默认值: 0

查询存储其结果到 query cache 的最小持续时间(毫秒)。

可能的值:

  • 正整数 >= 0。

query_cache_min_query_runs

类型: UInt64

默认值: 0

SELECT 查询必须运行的最小次数,在此之后其结果将存储在 query cache 中。

可能的值:

  • 正整数 >= 0。

query_cache_nondeterministic_function_handling

类型: QueryResultCacheNondeterministicFunctionHandling

默认值: throw

控制 query cache 如何处理带有非确定性函数的 SELECT 查询,例如 rand()now()

可能的值:

  • 'throw' - 抛出异常并不缓存查询结果。
  • 'save' - 缓存查询结果。
  • 'ignore' - 不缓存查询结果且不抛出异常。

query_cache_share_between_users

类型: Bool

默认值: 0

如果启用,则在 query cache 中缓存的 SELECT 查询的结果可被其他用户读取。 出于安全原因,不建议启用此设置。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_cache_squash_partial_results

类型: Bool

默认值: 1

将部分结果块压缩为 max_block_size 大小的块。降低查询缓存的插入性能,但提高缓存条目的压缩性(见 query_cache_compress-entries)。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_cache_system_table_handling

类型: QueryResultCacheSystemTableHandling

默认值: throw

控制 query cache 如何处理针对系统表的 SELECT 查询,即数据库 system.*information_schema.* 中的表。

可能的值:

  • 'throw' - 抛出异常并不缓存查询结果。
  • 'save' - 缓存查询结果。
  • 'ignore' - 不缓存查询结果且不抛出异常。

query_cache_tag

类型: String

默认值:

一个字符串,用作 query cache 条目的标签。 相同的查询如果有不同的标签,会被查询缓存视为不同的查询。

可能的值:

  • 任意字符串。

query_cache_ttl

类型: 秒

默认值: 60

此时间到期后,以秒为单位的 query cache 条目将变得过期。

可能的值:

  • 正整数 >= 0。

query_metric_log_interval

类型: Int64

默认值: -1

个别查询的 query_metric_log 收集的间隔(毫秒)。

如果设置为任何负值,它将采用 query_metric_log setting 中的 collect_interval_milliseconds 值,或者如果未提供则默认为 1000。

要禁用单个查询的收集,设置 query_metric_log_interval 为 0。

默认值: -1。

query_plan_aggregation_in_order

类型: Bool

默认值: 1

切换查询计划级优化中的顺序聚合。

仅在设置 query_plan_enable_optimizations 为 1 时生效。

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_plan_convert_outer_join_to_inner_join

类型: Bool

默认值: 1

如果 JOIN 后的过滤器始终过滤默认值,则允许将外部 JOIN 转换为内部 JOIN。

query_plan_enable_multithreading_after_window_functions

类型: Bool

默认值: 1

enable 在计算窗口函数后允许多线程处理,以实现并行流处理。

query_plan_enable_optimizations

类型: Bool

默认值: 1

切换查询计划级的优化。

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

可能的值:

  • 0 - 禁用所有查询计划级的优化。
  • 1 - 启用查询计划级的优化(但个别优化仍然可以通过其个别设置禁用)。

query_plan_execute_functions_after_sorting

类型: Bool

默认值: 1

切换查询计划级的优化,将表达式移动到排序步骤之后。

仅在设置 query_plan_enable_optimizations 为 1 时生效。

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_plan_filter_push_down

类型: Bool

默认值: 1

切换查询计划级优化,向下移动执行计划中的过滤器。

仅在设置 query_plan_enable_optimizations 为 1 时生效。

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_plan_join_swap_table

类型: BoolAuto

默认值: auto

决定 JOIN 中哪个侧应为构建表(也称为内部表,即插入哈希表的表)在查询计划中。此设置仅支持 ALL JOIN 严格性与 JOIN ON 子句。可能的值有:

  • 'auto': 让规划者决定使用哪个表作为构建表。
  • 'false': 永不交换表(右表为构建表)。
  • 'true': 始终交换表(左表为构建表)。

query_plan_lift_up_array_join

类型: Bool

默认值: 1

切换查询计划级优化,将 ARRAY JOIN 向上移动到执行计划中。

仅在设置 query_plan_enable_optimizations 为 1 时生效。

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_plan_lift_up_union

类型: Bool

默认值: 1

切换查询计划级优化,将更大的 query plan 子树移入 union,以启用进一步的优化。

仅在设置 query_plan_enable_optimizations 为 1 时生效。

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_plan_max_optimizations_to_apply

类型: UInt64

默认值: 10000

限制应用于查询计划的总优化数量,见设置 query_plan_enable_optimizations。 有助于避免复杂查询的优化时间过长。 在 EXPLAIN PLAN 查询中,在达到该限制后停止应用优化,并按原样返回计划。 对于常规查询执行,如果实际应用的优化数量超过此设置,将抛出异常。

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

query_plan_merge_expressions

类型: Bool

默认值: 1

切换查询计划级优化,合并连续的过滤器。

仅在设置 query_plan_enable_optimizations 为 1 时生效。

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_plan_merge_filters

类型: Bool

默认值: 1

允许在查询计划中合并过滤器。

query_plan_optimize_prewhere

类型: Bool

默认值: 1

允许将过滤器推送到支持的存储的 PREWHERE 表达式中。

query_plan_push_down_limit

类型: Bool

默认值: 1

切换查询计划级优化,向下移动执行计划中的 LIMIT。

仅在设置 query_plan_enable_optimizations 为 1 时生效。

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_plan_read_in_order

类型: Bool

默认值: 1

切换按照顺序读取的查询计划级优化。

仅在设置 query_plan_enable_optimizations 为 1 时生效。

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_plan_remove_redundant_distinct

类型: Bool

默认值: 1

切换查询计划级优化,删除冗余的 DISTINCT 步骤。

仅在设置 query_plan_enable_optimizations 为 1 时生效。

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_plan_remove_redundant_sorting

类型: Bool

默认值: 1

切换查询计划级优化,删除冗余的排序步骤,例如在子查询中。

仅在设置 query_plan_enable_optimizations 为 1 时生效。

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_plan_reuse_storage_ordering_for_window_functions

类型: Bool

默认值: 1

切换查询计划级优化,使用存储排序时用于窗口函数的排序。

仅在设置 query_plan_enable_optimizations 为 1 时生效。

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

可能的值:

  • 0 - 禁用
  • 1 - 启用

query_plan_split_filter

类型: Bool

默认值: 1

备注

这是一个专家级设置,仅应供开发人员调试使用。该设置可能在未来以向后不兼容的方式更改或被移除。

切换查询计划级优化,将过滤器分割为表达式。

仅在设置 query_plan_enable_optimizations 为 1 时生效。

可能的值:

  • 0 - 禁用
  • 1 - 启用

将会话时区 'America/Denver' 分配给没有明确指定时区的内部 DateTime:

危险

并非所有解析 DateTime/DateTime64 的函数都遵循 session_timezone。这可能导致微妙的错误。 请参阅以下示例和解释。

这发生是因为不同的解析管道:

  • 第一个 SELECT 查询中未明确给定时区的 toDateTime() 函数遵循了 session_timezone 和全局时区设置。
  • 在第二个查询中,从字符串解析的 DateTime 继承了已存在列 d 的类型和时区。因此,session_timezone 和全局时区设置未被遵循。

另请参见

set_overflow_mode

类型: OverflowMode

默认值: throw

超过限制时应采取的措施。

shared_merge_tree_sync_parts_on_partition_operations

类型: Bool

默认值: 1

在 SMT 表中执行 MOVE|REPLACE|ATTACH 分区操作后自动同步数据部分集。仅限云端。

short_circuit_function_evaluation

类型: ShortCircuitFunctionEvaluation

默认值: enable

允许根据 短路方案 计算 ifmultiIfandor 函数。这有助于优化这些函数中复杂表达式的执行并防止可能的异常(例如,预期外的零除法)。

可能的值:

  • enable — 启用适用于此的短路函数评估(可能抛出异常或计算密集型)。
  • force_enable — 为所有函数启用短路函数评估。
  • disable — 禁用短路函数评估。

short_circuit_function_evaluation_for_nulls

类型: Bool

默认值: 1

优化评估返回 NULL 的函数,当任何参数为 NULL 时。当函数参数中 NULL 值的百分比超过 short_circuit_function_evaluation_for_nulls_threshold 时,系统跳过逐行评估该函数。相反,它立即为所有行返回 NULL,避免不必要的计算。

short_circuit_function_evaluation_for_nulls_threshold

类型: Double

默认值: 1

在仅对所有参数均为非 NULL 的行执行具有 Nullable 参数的函数的行的 NULL 值的比例阈值。当包含 NULL 值的行的比例超过此阈值时,这些包含 NULL 值的行将不会被评估。

show_table_uuid_in_table_create_query_if_not_nil

类型: Bool

默认值: 0

设置 SHOW TABLE 查询显示。

可能的值:

  • 0 — 查询将不显示表 UUID。
  • 1 — 查询将显示表 UUID。

single_join_prefer_left_table

类型: Bool

默认值: 1

对于单个 JOIN,在标识符模糊的情况下,优先考虑左表。

skip_redundant_aliases_in_udf

类型: Bool

默认值: 0

在用户定义的函数中不使用(替代)冗余别名以简化其使用。

可能的值:

  • 1 — 在 UDF 中跳过(替代)别名。
  • 0 — 在 UDF 中不跳过(替代)别名。

示例

启用和禁用之间的区别:

查询:

结果:

查询:

结果:

skip_unavailable_shards

类型: Bool

默认值: 0

启用或禁用默默跳过不可用分片。

如果所有副本不可用,则认为分片不可用。副本在以下情况下不可用:

  • ClickHouse 出于任何原因无法连接到副本。

    连接到副本时,ClickHouse 会进行几次尝试。如果所有这些尝试都失败,则该副本被视为不可用。

  • 副本无法通过 DNS 解析。

    如果副本的主机名无法通过 DNS 解析,这可能表示以下情况:

    • 副本的主机没有 DNS 记录。这在具有动态 DNS 的系统中可能会发生,例如 Kubernetes,其中节点在停机期间可能无法解析,这并不算一个错误。

    • 配置错误。ClickHouse 配置文件包含错误的主机名。

可能的值:

  • 1 — 启用跳过。

    如果分片不可用,ClickHouse 将基于部分数据返回结果,并且不会报告节点可用性问题。

  • 0 — 禁用跳过。

    如果分片不可用,ClickHouse 将抛出异常。

sleep_after_receiving_query_ms

类型: 毫秒

默认值: 0

在 TCPHandler 中接收查询后休眠的时间。

sleep_in_send_data_ms

类型: 毫秒

默认值: 0

在 TCPHandler 中发送数据时的休眠时间。

sleep_in_send_tables_status_ms

类型: 毫秒

默认值: 0

在 TCPHandler 中发送表状态响应时的休眠时间。

sort_overflow_mode

类型: OverflowMode

默认值: throw

当超过限制时,该如何处理。

split_intersecting_parts_ranges_into_layers_final

类型: Bool

默认值: 1

在最终优化期间将相交的部分范围拆分成层。

split_parts_ranges_into_intersecting_and_non_intersecting_final

类型: Bool

默认值: 1

在最终优化期间将部分范围拆分为相交和不相交。

splitby_max_substrings_includes_remaining_string

类型: Bool

默认值: 0

控制当参数 max_substrings > 0 的函数 splitBy*() 是否将在结果数组的最后一个元素中包含剩余字符串。

可能的值:

  • 0 - 剩余字符串不会包含在结果数组的最后一个元素中。
  • 1 - 剩余字符串将包含在结果数组的最后一个元素中。这是 Spark 的 split() 函数和 Python 的 'string.split()' 方法的行为。

stop_refreshable_materialized_views_on_startup

Experimental feature. Learn more.

类型: Bool

默认值: 0

在服务器启动时,防止调度可刷新的物化视图,就好像使用了 SYSTEM STOP VIEWS。您可以在之后手动使用 SYSTEM START VIEWSSYSTEM START VIEW <name> 启动它们。也适用于新创建的视图。对不可刷新的物化视图没有影响。

storage_file_read_method

类型: LocalFSReadMethod

默认值: pread

从存储文件读取数据的方法,选项之一:readpreadmmap。mmap 方法不适用于 clickhouse-server(它用于 clickhouse-local)。

storage_system_stack_trace_pipe_read_timeout_ms

类型: 毫秒

默认值: 100

从管道读取以接收来自线程的信息的最大时间,当查询 system.stack_trace 表时。此设置用于测试目的,不应由用户更改。

stream_flush_interval_ms

类型: 毫秒

默认值: 7500

在超时的情况下或当一个线程生成 max_insert_block_size 行时适用于流式表。

默认值为 7500。

值越小,数据被冲洗到表中的频率越高。将值设置得过低会导致性能下降。

stream_like_engine_allow_direct_select

类型: Bool

默认值: 0

允许对 Kafka、RabbitMQ、FileLog、Redis Streams 和 NATS 引擎进行直接 SELECT 查询。如果有附加的物化视图,即使启用此设置,也不允许进行 SELECT 查询。

stream_like_engine_insert_queue

类型: String

默认值:

当流式引擎从多个队列读取时,用户在写入时需要选择一个队列进行插入。被 Redis Streams 和 NATS 使用。

stream_poll_timeout_ms

类型: 毫秒

默认值: 500

从/到流存储轮询数据的超时。

system_events_show_zero_values

类型: Bool

默认值: 0

允许从 system.events 选择零值事件。

一些监控系统要求将每个检查点的所有指标值传递给它们,即使指标值为零。

可能的值:

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

示例

查询

结果

查询

结果

table_function_remote_max_addresses

类型: UInt64

默认值: 1000

设置从模式生成的 remote 函数的最大地址数。

可能的值:

  • 正整数。

tcp_keep_alive_timeout

类型: 秒

默认值: 290

在 TCP 开始发送保持活动探测之前,连接需要保持空闲的时间(秒)。

temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds

类型: UInt64

默认值: 600000

锁定缓存以进行临时数据在文件系统缓存中的空间保留的等待时间。

temporary_files_codec

类型: String

默认值: LZ4

设置在磁盘上用于排序和连接操作的临时文件的压缩编解码器。

可能的值:

  • LZ4 — 应用 LZ4 压缩。
  • NONE — 不应用压缩。

throw_if_deduplication_in_dependent_materialized_views_enabled_with_async_insert

类型: Bool

默认值: 1

当设置 deduplicate_blocks_in_dependent_materialized_viewsasync_insert 一起启用时,对 INSERT 查询抛出异常。它确保了正确性,因为这些功能不能一起工作。

throw_if_no_data_to_insert

类型: Bool

默认值: 1

允许或禁止空 INSERT,默认启用(对空插入抛出错误)。仅适用于使用 clickhouse-client 或使用 gRPC 接口 的 INSERT。

throw_on_error_from_cache_on_write_operations

类型: Bool

默认值: 0

在写操作(INSERT,合并)时忽略来自缓存的错误。

throw_on_max_partitions_per_insert_block

类型: Bool

默认值: 1

与 max_partitions_per_insert_block 一起使用。如果为 true(默认),则在达到 max_partitions_per_insert_block 时将抛出异常。如果为 false,将记录达到此限制的插入查询的详细信息以及分区数量。如果您试图了解更改 max_partitions_per_insert_block 对用户的影响,这可能很有用。

throw_on_unsupported_query_inside_transaction

Experimental feature. Learn more.

类型: Bool

默认值: 1

如果在事务中使用不支持的查询则抛出异常。

timeout_before_checking_execution_speed

类型: 秒

默认值: 10

在经过指定时间后检查速度是否过低。

timeout_overflow_mode

类型: OverflowMode

默认值: throw

当超出限制时,该如何处理。

timeout_overflow_mode_leaf

类型: OverflowMode

默认值: throw

当叶限超出限制时,该如何处理。

totals_auto_threshold

类型: Float

默认值: 0.5

totals_mode = 'auto' 的阈值。 请参见 "WITH TOTALS 修饰符" 部分。

totals_mode

类型: TotalsMode

默认值: after_having_exclusive

当 HAVING 存在以及当 max_rows_to_group_by 和 group_by_overflow_mode = 'any' 存在时,计算 TOTALS 的方式。 请参见 "WITH TOTALS 修饰符" 部分。

trace_profile_events

类型: Bool

默认值: 0

启用或禁用在每次更新配置文件事件时收集堆栈跟踪,以及配置文件事件的名称和递增的值,并将其发送到 trace_log

可能的值:

  • 1 — 启用配置文件事件跟踪。
  • 0 — 禁用配置文件事件跟踪。

transfer_overflow_mode

类型: OverflowMode

默认值: throw

当超出限制时,该如何处理。

transform_null_in

类型: Bool

默认值: 0

启用 NULL 值在 IN 操作符中的相等性。

默认情况下,NULL 值无法进行比较,因为 NULL 意味着未定义的值。因此,比较 expr = NULL 必须始终返回 false。使用此设置时,NULL = NULL 对于 IN 操作符返回 true

可能的值:

  • 0 — 在 IN 操作符中比较 NULL 值返回 false
  • 1 — 在 IN 操作符中比较 NULL 值返回 true

示例

考虑 null_in 表:

查询:

结果:

查询:

结果:

另见

traverse_shadow_remote_data_paths

类型: Bool

默认值: 0

在查询 system.remote_data_paths 时,除了实际的表数据之外,还遍历冻结数据(影子目录)。

union_default_mode

类型: SetOperationMode

默认值:

设置组合 SELECT 查询结果的模式。该设置仅在与 UNION 共享且未显式指定 UNION ALLUNION DISTINCT 时使用。

可能的值:

  • 'DISTINCT' — ClickHouse 输出合并查询结果时去除重复行。
  • 'ALL' — ClickHouse 输出合并查询结果时包括重复行。
  • '' — ClickHouse 在使用 UNION 时生成异常。

参见 UNION 中的示例。

unknown_packet_in_send_data

类型: UInt64

默认值: 0

在第 N 个数据包中发送未知数据包,而不是数据。

use_async_executor_for_materialized_views

类型: Bool

默认值: 0

使用异步且可能是多线程执行的物化视图查询,可以加速在 INSERT 期间的视图处理,但也会消耗更多内存。

use_cache_for_count_from_files

类型: Bool

默认值: 1

启用在从表函数 file/s3/url/hdfs/azureBlobStorage 计数时缓存行数。

默认启用。

use_client_time_zone

类型: Bool

默认值: 0

使用客户端时区来解释 DateTime 字符串值,而不是采用服务器时区。

use_compact_format_in_distributed_parts_names

类型: Bool

默认值: 1

对背景 INSERT 到使用 Distributed 引擎的表存储块使用紧凑格式。

可能的值:

  • 0 — 使用 user[:password]@host:port#default_database 目录格式。
  • 1 — 使用 [shard{shard_index}[_replica{replica_index}]] 目录格式。
备注
  • 如果 use_compact_format_in_distributed_parts_names=0,对集群定义的更改将不会应用于后台 INSERT。
  • 如果 use_compact_format_in_distributed_parts_names=1,更改集群定义中节点的顺序将更改 shard_index/replica_index,因此要注意。

use_concurrency_control

类型: Bool

默认值: 1

遵循服务器的并发控制(请参见 concurrent_threads_soft_limit_numconcurrent_threads_soft_limit_ratio_to_cores 全局服务器设置)。如果禁用,它允许使用更多的线程,即使服务器过载(不推荐正常使用,主要用于测试)。

use_hedged_requests

类型: Bool

默认值: 1

启用远程查询的边缘请求逻辑。它允许通过不同的副本建立多个连接以进行查询。 如果在 hedged_connection_timeout 内未建立与副本的现有连接,或在 receive_data_timeout 内未接收到数据,则启用新连接。查询使用发送非空进度包(或数据包的第一个连接,如果 allow_changing_replica_until_first_data_packet);其他连接将被取消。支持使用 max_parallel_replicas > 1 的查询。

默认启用。

在 Cloud 中默认禁用。

use_hive_partitioning

类型: Bool

默认值: 1

启用时,ClickHouse 将在文件类表引擎 File/S3/URL/HDFS/AzureBlobStorage 的路径中检测 Hive 风格的分区 (/name=value/),并允许在查询中将分区列作为虚拟列使用。这些虚拟列将与分区路径中的名称相同,但以 _ 开头。

use_iceberg_partition_pruning

类型: Bool

默认值: 0

对 Iceberg 表使用 Iceberg 分区修剪。

use_index_for_in_with_subqueries

类型: Bool

默认值: 1

尝试在 IN 操作符的右侧有子查询或表表达式时使用索引进行过滤。

use_index_for_in_with_subqueries_max_values

类型: UInt64

默认值: 0

IN 操作符右侧集合要使用表索引进行过滤的最大大小。这可以避免由于为大查询准备额外数据结构而导致的性能下降和更高的内存使用。零表示无限制。

use_json_alias_for_old_object_type

类型: Bool

默认值: 0

启用时,JSON 数据类型别名将用于创建旧的 Object('json') 类型,而不是新的 JSON 类型。

use_local_cache_for_remote_storage

类型: Bool

默认值: 1

对远程存储(例如 HDFS 或 S3)使用本地缓存,仅用于远程表引擎。

use_page_cache_for_disks_without_file_cache

类型: Bool

默认值: 0

对于没有启用文件系统缓存的远程磁盘使用用户空间页面缓存。

use_page_cache_with_distributed_cache

类型: Bool

默认值: 0

当使用分布式缓存时使用用户空间页面缓存。

use_query_cache

类型: Bool

默认值: 0

如果启用,SELECT 查询可能会利用 查询缓存。参数 enable_reads_from_query_cacheenable_writes_to_query_cache 更详细地控制缓存的使用。

可能的值:

  • 0 - 禁用
  • 1 - 启用

use_query_condition_cache

类型: Bool

默认值: 0

启用查询条件缓存。

可能的值:

  • 0 - 禁用
  • 1 - 启用

use_skip_indexes

类型: Bool

默认值: 1

在查询执行期间使用数据跳过索引。

可能的值:

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

use_skip_indexes_if_final

类型: Bool

默认值: 0

控制在执行带有 FINAL 修饰符的查询时是否使用跳过索引。

默认情况下,此设置被禁用,因为跳过索引可能会排除包含最新数据的行(粒度),这可能导致不正确的结果。当启用时,即使有 FINAL 修饰符也应用跳过索引,这可能会提高性能,但存在遗漏最近更新的风险。

可能的值:

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

use_structure_from_insertion_table_in_table_functions

类型: UInt64

默认值: 2

使用插入表的结构,而不是从数据推断模式。可能的值:0 - 禁用,1 - 启用,2 - 自动选择。

use_uncompressed_cache

类型: Bool

默认值: 0

是否使用未压缩块的缓存。接受 0 或 1。默认值为 0(禁用)。 使用未压缩缓存(仅适用于 MergeTree 系列的表)可以显著降低延迟并提高在大量短查询时的吞吐量。对于频繁发送短请求的用户,请启用此设置。同时注意 uncompressed_cache_size 配置参数(仅在配置文件中设置) - 未压缩缓存块的大小。默认值为 8 GiB。未压缩缓存在需要时填充,最少使用的数据会自动删除。

对于读取至少一定量数据(百万行或以上)的查询,将自动禁用未压缩缓存,以为真正的小查询腾出空间。这意味着您可以始终将 'use_uncompressed_cache' 设置为 1。

use_variant_as_common_type

类型: Bool

默认值: 0

允许在没有公共类型的参数类型时,将 Variant 类型用作 if/multiIf/array/map 函数的结果类型。

示例:

use_with_fill_by_sorting_prefix

类型: Bool

默认值: 1

ORDER BY 子句中将填充列排列在 WITH FILL 之前的列形成排序前缀。具有不同排序前缀值的行将独立地被填充。

validate_enum_literals_in_operators

类型: Bool

默认值: 0

如果启用,验证操作符(如 INNOT IN==!= 中的枚举文字,并在文字不是有效的枚举值时抛出异常。

validate_mutation_query

类型: Bool

默认值: 1

在接受突变查询之前验证突变查询。突变在后台执行,运行无效查询将导致突变卡住,需要手动干预。

仅在遇到向后不兼容的错误时更改此设置。

validate_polygons

类型: Bool

默认值: 1

启用或禁用在 pointInPolygon 函数中抛出异常,如果多边形自相交或自切线。

可能的值:

  • 0 — 禁用抛出异常。pointInPolygon 接受无效多边形并为其返回可能不正确的结果。
  • 1 — 启用抛出异常。

wait_changes_become_visible_after_commit_mode

Experimental feature. Learn more.

类型: TransactionsWaitCSNMode

默认值: wait_unknown

等待提交的更改在最新快照中实际可见。

wait_for_async_insert

类型: Bool

默认值: 1

如果为 true,等待异步插入处理。

wait_for_async_insert_timeout

类型: 秒

默认值: 120

等待异步插入处理的超时时间。

wait_for_window_view_fire_signal_timeout

Experimental feature. Learn more.

类型: 秒

默认值: 10

等待事件时间处理中窗口视图触发信号的超时时间。

window_view_clean_interval

Experimental feature. Learn more.

类型: 秒

默认值: 60

窗口视图清理的间隔时间(以秒为单位),以释放过时数据。

window_view_heartbeat_interval

Experimental feature. Learn more.

类型: 秒

默认值: 15

心跳间隔(以秒为单位),表示监视查询仍然处于活动状态。

workload

类型: String

默认值: default

可用于访问资源的工作负载名称。

write_through_distributed_cache

ClickHouse Cloud only

类型: Bool

默认值: 0

仅在 ClickHouse Cloud 中有效。允许写入到分布式缓存(写入到 s3 也将通过分布式缓存进行)。

zstd_window_log_max

类型: Int64

默认值: 0

允许选择 ZSTD 的最大窗口日志(不适用于 MergeTree 系列)。