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_columns_cache
是否使用列缓存。可取值为 0 或 1。默认值为 0 (禁用) 。 列缓存用于存储从MergeTree 表中反序列化得到的列,从而避免对热点数据反复进行解压缩和反序列化。对于针对相同数据的重复查询,这可以显著降低延迟。缓存以表 UUID、分片名称、列名以及一个条带 (由约 65536 行的连续粒度组成) 为键。
由于缓存条目以表 UUID 为键,因此该缓存仅对会分配 UUID 的数据库中的表生效,例如 Atomic、Replicated 和 Shared (ClickHouse Cloud 中的默认数据库引擎) ;旧版 Ordinary 数据库中的 MergeTree 表的 UUID 为空,会静默忽略此设置。
目前该缓存仅适用于 wide 分片:compact 分片中的数据既不会从列缓存中读取,也不会写入列缓存,因此读取能否加速取决于分片的格式。
每个缓存条目保存某个条带内的一段连续粒度:只有当某个粒度从第一行到最后一行都被完整读取后,它才会进入缓存;从缓存读取时按粒度逐个提供数据;不同读取操作写入的范围会被合并,因此即使各次读取将同一个分片划分为不同的标记范围,也能共享这些缓存条目。
use_concurrency_control
遵守服务器的并发控制 (参见全局服务器设置concurrent_threads_soft_limit_num 和 concurrent_threads_soft_limit_ratio_to_cores) 。如果禁用,即使服务器已过载,也允许使用更多线程 (不建议在正常使用场景下这样做,通常仅测试时才需要) 。
use_constant_folding_in_index_analysis
在按每个 分片 分析主键和跳过索引时,将分区级常量代入过滤谓词。 当分区键与主键列或跳过索引列同时出现在过滤器中时,这会让索引分析在每个 分片 内分别折叠分区值。它对各个分支分别针对不同分区的析取过滤器尤其有用。例如,在使用PARTITION BY a 和 ORDER BY b 时:
a = 1 中的分片,条件可折叠为 b >= 1;而对于分区 a = 2 和 a = 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_indexes_refiner_in_read_pools
将数据读取时已评估的索引应用于 MergeTree 读取池内部:对于被跳过索引 (请参阅use_skip_indexes_on_data_read) 或投影索引 (请参阅 optimize_use_projection_filtering) 完全筛除的标记范围,会在创建读取任务前将其丢弃,而非在读取过程中逐粒度跳过。
在预拉取读取池中,被丢弃的范围不会被预拉取。但任务边界以及由 filesystem_prefetch_max_memory_usage / filesystem_prefetches_limit 控制的预拉取准入仍会在筛选前确定,因此在高选择性过滤条件下,保留下来的任务可能小于预期任务大小,准入也可能较为保守。
use_join_disjunctions_push_down
启用将 JOIN 条件中由 或 连接的各部分下推到对应输入侧 (“部分下推”) 。 这样可使存储引擎更早执行过滤,从而减少读取的数据量。 该优化不会改变语义,并且仅在每个顶层 或 分支都至少为目标侧提供一个确定性 谓词时才会应用。use_legacy_to_time
启用后,名称toTime 指的是旧版 toTime 函数,
该函数会将日期时间转换为某个固定日期,同时保留时间部分。
否则,该名称指的是新的 toTime 函数,
该函数会将不同类型的值转换为 Time 类型。
无论此设置如何,旧版函数始终可通过 toTimeWithFixedDate 访问。
启用此设置时,请使用 CAST(x AS Time) 或 x::Time 转换为 Time 类型。
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 中任意一个。
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。