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

use_async_executor_for_materialized_views

使用异步以及可能的多线程方式执行 materialized view 查询,可在 INSERT 期间加快视图处理,但也会占用更多内存。

use_cache_for_count_from_files

启用在对表函数 file/s3/url/hdfs/azureBlobStorage 中的文件执行 count 时缓存行数。 默认启用。

use_client_time_zone

使用客户端时区来解析 DateTime 字符串值,而不是使用服务器时区。

use_compact_format_in_distributed_parts_names

对于使用 Distributed 引擎的表,后台 (distributed_foreground_insert) INSERT 在存储块时使用紧凑格式。 可能的值:
  • 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

遵守服务器的并发控制 (参见全局服务器设置 concurrent_threads_soft_limit_numconcurrent_threads_soft_limit_ratio_to_cores) 。如果禁用,即使服务器已过载,也允许使用更多线程 (不建议在正常使用场景下这样做,通常仅测试时才需要) 。

use_constant_folding_in_index_analysis

在按每个 分片 分析主键和跳过索引时,将分区级常量代入过滤谓词。 当分区键与主键列或跳过索引列同时出现在过滤器中时,这会让索引分析在每个 分片 内分别折叠分区值。它对各个分支分别针对不同分区的析取过滤器尤其有用。例如,在使用 PARTITION BY aORDER BY b 时:
对于分区 a = 1 中的分片,条件可折叠为 b >= 1;而对于分区 a = 2a = 3 中的分片,则可折叠为 b > 10,因此会根据实际适用于每个分片的谓词分别进行分析。 可选值:
  • 0 — 禁用。
  • 1 — 启用。

use_hash_table_stats_for_join_reordering

启用在 JOIN 重排序期间使用已收集的哈希表统计信息进行基数估算

use_hedged_requests

启用远程查询的 hedged requests 逻辑。这样在执行查询时,可以与不同副本建立多个连接。 如果与副本的现有连接未能在 hedged_connection_timeout 内建立, 或在 receive_data_timeout 内未收到任何数据,则会启用新连接。查询会使用第一个发送非空 Progress packet 的连接 (或者在 allow_changing_replica_until_first_data_packet 的情况下,使用第一个发送 data packet 的连接) ; 其他连接会被取消。支持 max_parallel_replicas > 1 的查询。 默认启用。 Cloud 默认值:0

use_hive_partitioning

启用后,ClickHouse 会在类文件表引擎 File/S3/URL/HDFS/AzureBlobStorage 的路径 (/name=value/) 中检测 Hive 风格分区,并允许在查询中将分区列作为虚拟列使用。这些虚拟列的名称与分区路径中的名称相同,但会以下划线 _ 开头。

use_join_disjunctions_push_down

启用将 JOIN 条件中由 或 连接的各部分下推到对应输入侧 (“部分下推”) 。 这样可使存储引擎更早执行过滤,从而减少读取的数据量。 该优化不会改变语义,并且仅在每个顶层 或 分支都至少为目标侧提供一个确定性 谓词时才会应用。

use_legacy_to_time

启用后,可使用旧版 toTime 函数。该函数会将日期时间转换为某个固定日期,同时保留时间部分。 否则,将使用新的 toTime 函数,把不同类型的数据转换为 Time 类型。 旧版函数也始终可直接通过 toTimeWithFixedDate 访问。

use_lightweight_primary_key_index_analysis

优化具有较长主键的 MergeTree 表的主键索引分析。 启用后,索引分析的运行时间主要取决于查询过滤器的复杂度 (即实际使用到的键列) ,而不是主键长度。因此,对于只按其中少数列进行过滤的查询,扩展排序键几乎不会给索引分析带来额外开销。 可能的值:
  • 0 — 已禁用。索引分析期间会处理所有主键列。
  • 1 — 已启用。

use_parquet_metadata_cache

如果启用,Parquet 格式可使用 Parquet 元数据缓存。 可能的值:
  • 0 - 已禁用
  • 1 - 已启用

use_primary_key

在查询执行期间,使用主键对 MergeTree 表的粒度进行剪枝。 可能的值:
  • 0 — 已禁用。
  • 1 — 已启用。

use_reader_executor

实验性功能。将读取通过新的管道 ReaderExecutor 进行路由,而不是使用传统的多层读取缓冲区嵌套结构。对于执行器尚未支持的配置,会回退到传统路径。

use_roaring_bitmap_iceberg_positional_deletes

对 Iceberg 位置删除使用 roaring bitmap。

use_streaming_marks_compression

在为 MergeTree 分片 加载 marks 时,将其逐块 (流式) 压缩为内存中的表示,而不是先物化完整的原始 marks 数组。这会显著降低为包含许多 substreams 的 compact 分片 加载 marks 时的峰值内存占用 (例如包含 JSON 列且启用了 write_marks_for_substreams_in_compact_parts 的表) 。

use_strict_insert_block_limits

启用后,会严格执行最小和最大插入块大小限制。 在以下情况下会输出一个块:
  • 最小阈值 (与) :同时达到 min_insert_block_size_rows AND min_insert_block_size_bytes。
  • 最大阈值 (或) :达到 max_insert_block_size_rows 或 max_insert_block_size_bytes 中任意一个。
禁用后,在以下情况下会输出一个块:
  • 最小阈值 (或) :达到 min_insert_block_size_rows 或 min_insert_block_size_bytes 中任意一个。
:如果 max 设置小于 min 设置,则 max 限制具有优先次序,块会在达到最小阈值之前输出。 :对于异步插入,此设置会自动禁用,因为异步插入会为每个条目附加去重标记,而这与执行严格限制所需的块拆分不兼容。 默认禁用。

use_structure_from_insertion_table_in_table_functions

使用插入表的结构,而不是根据数据自动推断 schema。可选值:0 - 禁用,1 - 启用,2 - 自动

use_uncompressed_cache

是否使用未压缩块缓存。可选值为 0 或 1。默认值为 0 (禁用) 。 使用未压缩缓存 (仅适用于 MergeTree 家族中的表) 可以在处理大量短查询时显著降低延迟并提高吞吐量。对于频繁发送短请求的用户,建议启用此设置。同时还要注意 uncompressed_cache_size 配置参数 (只能在配置文件中设置) ——它指定未压缩缓存块的大小。默认值为 8 GiB。未压缩缓存会按需填充,并自动删除使用频率最低的数据。 对于读取的数据量较大的查询 (100 万行或更多) ,系统会自动禁用未压缩缓存,以便为真正的小查询节省空间。这意味着你可以始终将 use_uncompressed_cache 设为 1。

use_with_fill_by_sorting_prefix

在 ORDER BY 子句中,位于 WITH FILL 列之前的列构成排序前缀。对于排序前缀值不同的行,将分别独立填充
最后修改于 2026年7月24日