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

merge_tree_coarse_index_granularity

搜索数据时,ClickHouse 会检查索引文件中的数据标记。如果 ClickHouse 发现所需的键位于某个范围内,就会将该范围划分为 merge_tree_coarse_index_granularity 个子范围,并在这些子范围内递归搜索所需的键。 可选值:
  • 任意正偶整数。

merge_tree_compact_parts_min_granules_to_multibuffer_read

仅在 ClickHouse Cloud 中生效。此设置指定 MergeTree 表的 compact part 中单个 stripe 的粒度数达到多少时使用 multibuffer reader;该读取器支持并行读取和预取。从远程文件系统读取时,使用 multibuffer reader 会增加读取请求的数量。当某个分片包含的粒度数既小于此阈值,又小于正在读取的列数时,会使用 single buffer reader 读取该分片,因为在这种情况下,single buffer reader 发出的读取请求少于 multibuffer reader。

merge_tree_determine_task_size_by_prewhere_columns

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

merge_tree_generic_exclusion_search_max_steps

当某个过滤器无法被评估为主键上的单个连续范围时,例如它使用了除第一个键列之外的其他键列,ClickHouse 会在索引标记上运行迭代式的 generic exclusion search algorithm。分析 text index 时也会使用同样的算法。此设置会限制该算法在每个数据分区片段上消耗的步数 (索引检查次数) 。 预算会优先用于当前剩余的最大标记范围。当预算耗尽时,尚未完全分析的范围会被整体接受,因此查询结果仍然正确,但读取的粒度可能会比无限制搜索选出的更多。预算越低,索引分析越快,但代价是需要读取更多数据。该限制是近似限制,而不是分析成本的严格上限:搜索大致可能会多出一轮拆分;并且当该分区片段已经被划分为许多范围时 (例如由 query condition cache 导致) ,无论限制值是多少,每个范围至少都会被检查一次。 搜索在每个数据分区片段上执行的步数会记录在该查询的 trace 级别日志消息中,而 IndexGenericExclusionSearchStepLimitReachedTextIndexGenericExclusionSearchStepLimitReached 这两个 profile events 会统计预算耗尽的次数。 (默认) 值 0 表示步数不受限制。 可选值:
  • 0 表示步数不受限制,或任意正整数。

merge_tree_max_bytes_to_use_cache

如果 ClickHouse 在一次查询中需要读取超过 merge_tree_max_bytes_to_use_cache 字节的数据,则不会使用未压缩块缓存。 未压缩块缓存用于存储为查询提取的数据。ClickHouse 使用此缓存来加快重复的小型查询的响应速度。此设置可防止读取大量数据的查询冲刷缓存。uncompressed_cache_size 这一服务器设置定义了未压缩块缓存的大小。 可能的值:
  • 任意正整数。

merge_tree_max_rows_to_use_cache

如果 ClickHouse 在一次查询中需要读取的行数超过 merge_tree_max_rows_to_use_cache,则不会使用未压缩块缓存。 未压缩块缓存用于存储为查询提取出的数据。ClickHouse 使用此缓存来加快重复执行的小型查询的响应速度。此设置可防止读取大量数据的查询污染缓存。uncompressed_cache_size 服务器设置定义了未压缩块缓存的大小。 可选值:
  • 任意正整数。

merge_tree_min_bytes_for_concurrent_read

如果从一个 MergeTree 引擎的表中的单个文件读取的字节数超过 merge_tree_min_bytes_for_concurrent_read,那么 ClickHouse 会尝试使用多个线程并发读取该文件。 可能的值:
  • 正整数。

merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem

从远程文件系统读取时,MergeTree 引擎可并行读取前,单个文件至少需要读取的字节数。我们不建议使用此设置。 可能的值:
  • 正整数。

merge_tree_min_bytes_for_seek

如果在同一个文件中待读取的两个数据块之间的距离小于 merge_tree_min_bytes_for_seek 字节,ClickHouse 就会顺序读取包含这两个块的那段文件范围,从而避免额外的寻道。 可能的值:
  • 任意正整数。

merge_tree_min_bytes_per_task_for_remote_reading

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

merge_tree_min_read_task_size

任务大小的硬性下限 (即使粒度数量较少且可用线程数较多,我们也不会分配更小的任务

merge_tree_min_rows_for_concurrent_read

如果从 MergeTree 表文件中读取的行数超过 merge_tree_min_rows_for_concurrent_read,ClickHouse 会尝试使用多个线程并发读取该文件。 可能的值:
  • 正整数。

merge_tree_min_rows_for_concurrent_read_for_remote_filesystem

从远程文件系统读取时,MergeTree 引擎开始并行读取前,单个文件至少需要读取的行数。我们不建议使用此设置。 可能的值:
  • 正整数。

merge_tree_min_rows_for_seek

如果在同一文件中,要读取的两个数据块之间的距离小于 merge_tree_min_rows_for_seek 行,ClickHouse 就不会在文件中执行寻道,而是顺序读取数据。 可能的值:
  • 任意正整数。

merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_injection_probability

用于测试 PartsSplitter——每次从 MergeTree 读取时,都会以指定概率将读取范围拆分为相交和不相交两部分。

merge_tree_storage_snapshot_sleep_ms

为 MergeTree 表创建存储快照时,会注入人为延迟 (以毫秒为单位) 。 仅用于测试和调试。 可能的值:
  • 0 - 无延迟 (默认)
  • N - 延迟的毫秒数

merge_tree_use_const_size_tasks_for_remote_reading

是否在从远程表读取时使用固定大小的任务。

merge_tree_use_deserialization_prefixes_cache

启用在 MergeTree 从远程磁盘读取时,对文件前缀中的列元数据进行缓存。

merge_tree_use_prefixes_deserialization_thread_pool

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

merge_tree_use_v1_object_and_dynamic_serialization

启用后,MergeTree 将对 JSON 和 Dynamic 类型使用 V1 序列化版本,而不是 V2。更改此设置仅在 server 重启后才会生效。
最后修改于 2026年7月24日