这些设置可在 system.settings 中查看,并由 源代码 自动生成。
use_async_executor_for_materialized_views
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 24.12 | 0 | 新增设置。 |
使用异步以及可能的多线程方式执行 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
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 21.1 | 1 | 默认对写入分布式表的异步 INSERT 使用紧凑格式 |
对于使用 Distributed 引擎的表,后台 (distributed_foreground_insert) INSERT 在存储块时使用紧凑格式。
可能的值:
- 0 — 使用
user[:password]@host:port#default_database目录格式。 - 1 — 使用
[shard{shard_index}[_replica{replica_index}]]目录格式。
use_concurrency_control
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 24.12 | 1 | 默认启用并发控制 |
遵守服务器的并发控制 (参见全局服务器设置 concurrent_threads_soft_limit_num 和 concurrent_threads_soft_limit_ratio_to_cores) 。如果禁用,即使服务器已过载,也允许使用更多线程 (不建议在正常使用场景下这样做,通常仅测试时才需要) 。
use_constant_folding_in_index_analysis
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.7 | 0 | 新增设置:在 MergeTree 索引分析期间,将分区级常量按每个 分片 折叠到过滤谓词中,从而改进对分支依赖分区值的过滤器的剪枝效果。 |
在按每个 分片 分析主键和跳过索引时,将分区级常量代入过滤谓词。
当分区键与主键列或跳过索引列同时出现在过滤器中时,这会让索引分析在每个 分片 内分别折叠分区值。它对各个分支分别针对不同分区的析取过滤器尤其有用。例如,在使用 PARTITION BY a 和 ORDER BY b 时:
SELECT * FROM t WHERE (a = 1 AND b >= 1) OR (a = 2 AND b > 10) OR (a = 3 AND b > 10)对于分区 a = 1 中的分片,条件可折叠为 b >= 1;而对于分区 a = 2 和 a = 3 中的分片,则可折叠为 b > 10,因此会根据实际适用于每个分片的谓词分别进行分析。
可选值:
- 0 — 禁用。
- 1 — 启用。
use_hash_table_stats_for_join_reordering
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.1 | 1 | 新设置。此前与 'collect_hash_table_stats_during_joins' 设置保持一致。 |
启用在 JOIN 重排序期间使用已收集的哈希表统计信息进行基数估算
use_hedged_requests
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 21.9 | 1 | 默认启用 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
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 25.1 | 1 | 默认启用此设置。 |
| 24.8 | 0 | 允许在 File、URL、S3、AzureBlobStorage 和 HDFS 引擎中使用 Hive 风格分区。 |
启用后,ClickHouse 会在类文件表引擎 File/S3/URL/HDFS/AzureBlobStorage 的路径 (/name=value/) 中检测 Hive 风格分区,并允许在查询中将分区列作为虚拟列使用。这些虚拟列的名称与分区路径中的名称相同,但会以下划线 _ 开头。
use_indexes_refiner_in_read_pools
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.8 | 0 | 新增设置:在 MergeTree 读取池中创建读取任务前,丢弃被跳过索引或投影索引完全筛除的标记范围。 |
将数据读取时已评估的索引应用于 MergeTree 读取池内部:对于被跳过索引 (请参阅 use_skip_indexes_on_data_read) 或投影索引 (请参阅 optimize_use_projection_filtering) 完全筛除的标记范围,会在创建读取任务前将其丢弃,而非在读取过程中逐粒度跳过。
在预拉取读取池中,被丢弃的范围不会被预拉取。但任务边界以及由 filesystem_prefetch_max_memory_usage / filesystem_prefetches_limit 控制的预拉取准入仍会在筛选前确定,因此在高选择性过滤条件下,保留下来的任务可能小于预期任务大小,准入也可能较为保守。
use_join_disjunctions_push_down
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.1 | 1 | 启用此优化。 |
| 25.10 | 0 | 新增设置。 |
启用将 JOIN 条件中由 或 连接的各部分下推到对应输入侧 (“部分下推”) 。 这样可使存储引擎更早执行过滤,从而减少读取的数据量。 该优化不会改变语义,并且仅在每个顶层 或 分支都至少为目标侧提供一个确定性 谓词时才会应用。
use_legacy_to_time
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.7 | 0 | 默认使用新的 `toTime` 函数(将值转换为 `Time` 数据类型),而不是旧版 `toTime`(后者仍可通过 `toTimeWithFixedDate` 使用)。 |
| 25.6 | 1 | 新增设置。允许用户对 `toTime` 使用旧版函数逻辑,其行为与 `toTimeWithFixedDate` 相同。 |
启用后,名称 toTime 指的是旧版 toTime 函数,
该函数会将日期时间转换为某个固定日期,同时保留时间部分。
否则,该名称指的是新的 toTime 函数,
该函数会将不同类型的值转换为 Time 类型。
无论此设置如何,旧版函数始终可通过 toTimeWithFixedDate 访问。
启用此设置时,请使用 CAST(x AS Time) 或 x::Time 转换为 Time 类型。
use_lightweight_primary_key_index_analysis
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.6 | 1 | 新增设置,用于优化具有较长主键的表的主键索引分析 |
优化具有较长主键的 MergeTree 表的主键索引分析。
启用后,索引分析的运行时间主要取决于查询过滤器的复杂度 (即实际使用到的键列) ,而不是主键长度。因此,对于只按其中少数列进行过滤的查询,扩展排序键几乎不会给索引分析带来额外开销。
可能的值:
- 0 — 已禁用。索引分析期间会处理所有主键列。
- 1 — 已启用。
use_parquet_metadata_cache
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.3 | 1 | 启用 Parquet 文件元数据缓存。 |
如果启用,Parquet 格式可使用 Parquet 元数据缓存。
可能的值:
- 0 - 已禁用
- 1 - 已启用
use_primary_key
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.1 | 1 | 用于控制 MergeTree 是否使用主键进行粒度级剪枝的新设置。 |
在查询执行期间,使用主键对 MergeTree 表的粒度进行剪枝。
可能的值:
- 0 — 已禁用。
- 1 — 已启用。
use_reader_executor
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.6 | 0 | 新增 Experimental 设置:将读取通过新的管道 `ReaderExecutor` 进行路由,而不是使用传统的多层读取缓冲区嵌套结构。 |
实验性功能。将读取通过新的管道 ReaderExecutor 进行路由,而不是使用传统的多层读取缓冲区嵌套结构。对于执行器尚未支持的配置,会回退到传统路径。
use_roaring_bitmap_iceberg_positional_deletes
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 25.8 | 0 | 新增设置 |
对 Iceberg 位置删除使用 roaring bitmap。
use_streaming_marks_compression
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.7 | 0 | 新增设置:将 marks 逐块(流式)压缩为内存中的表示,而不是先物化完整的原始 marks 数组,从而在为包含许多 substreams 的 compact 分片 加载 marks 时降低峰值内存占用。 |
在为 MergeTree 分片 加载 marks 时,将其逐块 (流式) 压缩为内存中的表示,而不是先物化完整的原始 marks 数组。这会显著降低为包含许多 substreams 的 compact 分片 加载 marks 时的峰值内存占用 (例如包含 JSON 列且启用了 write_marks_for_substreams_in_compact_parts 的表) 。
use_strict_insert_block_limits
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.4 | 0 | 新增设置,用于在插入时严格应用最小和最大插入边界。当 min < max 时,max 限制具有优先次序。 |
启用后,会严格执行最小和最大插入块大小限制。
在以下情况下会输出一个块:
- 最小阈值 (与) :同时达到 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
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 22.11 | 2 | 改进在表函数中使用插入表结构的功能 |
使用插入表的结构,而不是根据数据自动推断 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
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 23.5 | 1 | 在 ORDER BY 子句中,位于 WITH FILL 列之前的列构成排序前缀。对于排序前缀值不同的行,将分别独立填充 |
在 ORDER BY 子句中,位于 WITH FILL 列之前的列构成排序前缀。对于排序前缀值不同的行,将分别独立填充