Skip to main content
这些设置可在 system.settings 中找到,并根据 源代码 自动生成。

max_rows_for_lazy_final

lazy FINAL 优化所用集合中的最大行数。超过该值时,将回退到普通 FINAL。

max_rows_in_distinct

使用 DISTINCT 时,允许的最大不同行数。

max_rows_in_join

限制表连接时右侧数据结构 (通常为哈希 表) 中的行数。 此设置适用于 SELECT … JOIN 操作以及 Join 表引擎。 如果一个查询包含多个连接,ClickHouse 会对每个 中间结果检查此设置。对于所有基于哈希的 join_algorithm,它都是硬性上限:达到该限制时, 查询会根据 join_overflow_mode 抛出异常或中断。 它绝不会导致连接落盘——是否落盘由 max_bytes_before_external_join 和 max_bytes_ratio_before_external_join 决定。 例外情况是 legacy_join_size_limits_trigger_spilling:启用后,连接中已在磁盘上运行的 部分会将此限制视为进一步的落盘触发条件,而非上限。 可能的值:
  • 正整数。
  • 0 — 行数不受限制。

max_rows_in_set

由子查询创建的 IN 子句中的数据集的最大行数。

max_rows_in_set_to_optimize_join

在执行连接前,使用彼此的行集合对待连接的表进行过滤时,集合的最大大小。 可能的值:
  • 0 — 禁用。
  • 任意正整数。

max_rows_to_group_by

聚合时接收到的唯一键的最大数量。此设置可帮助您在进行聚合时限制内存消耗。 如果 GROUP BY 期间的聚合生成的行数 (唯一的 GROUP BY 键) 超过指定数量,其行为将由 ‘group_by_overflow_mode’ 决定;默认值为 throw,但也可以切换为近似 GROUP BY 模式。

max_rows_to_read

运行查询时可从表中读取的最大行数。 该限制会对每个已处理的数据块进行检查,并且仅应用于最深层的 表表达式;从远程服务器读取时,也仅在 远程服务器上进行检查。

max_rows_to_read_leaf

运行分布式查询时,在叶节点上的本地表中可读取的最大行数。虽然分布式查询可以向每个分片 (叶节点) 发出多个子查询,但此限制只会在叶节点的读取阶段进行检查,而在根节点的结果合并阶段会被忽略。 例如,一个集群由 2 个分片组成,每个分片都包含一个有 100 行的表。某个分布式查询如果要从这两个表中读取全部数据,并设置 max_rows_to_read=150,则会失败,因为总行数为 200。设置 max_rows_to_read_leaf=150 的查询则会成功,因为叶节点最多只会读取 100 行。 该限制会对每个已处理的数据块进行检查。
此设置在 prefer_localhost_replica=1 时不稳定。

max_rows_to_sort

排序前允许的最大行数。这有助于在排序时限制内存消耗。 如果 ORDER BY 操作需要处理的记录数超过指定数量, 其行为将由 sort_overflow_mode 决定,该值默认设置为 throw。

max_rows_to_transfer

执行 GLOBAL IN/JOIN 部分时,可传递到远程服务器或保存在临时表中的最大行数。
最后修改于 2026年9月26日