max_bytes_before_external_group_by
GROUP BY 子句。
(参见 外部内存中的 GROUP BY)
可能的值:
- 单次 GROUP BY 操作可使用的最大 RAM 容量 (以字节为单位) 。
0— 禁用外部内存中的GROUP BY。
如果 GROUP BY 操作期间的内存使用量超过此阈值 (以字节为单位) ,
则会启用“外部聚合”模式 (将数据落盘) 。建议值为可用系统内存的一半。
max_bytes_before_external_join
join_algorithm 为 hash、parallel_hash、default 或 auto,当右侧数据超过该字节数时,哈希 JOIN 会自动转换为 grace hash join,以支持落盘。设置为 0 (默认值) 时,此绝对字节阈值将被禁用,但仍可能通过 max_bytes_ratio_before_external_join (其默认值为 0.5) 自动落盘;将两者都设为 0 可完全禁用自动落盘。它会阻止通过 JOIN 优化实现的 read in order。
max_bytes_before_external_sort
ORDER BY 子句。参见 ORDER BY 实现细节
如果 ORDER BY 操作期间的内存使用量超过此阈值 (以字节为单位) ,就会启用“外部排序”模式 (将数据落盘到磁盘) 。
可能的值:
- 单次 ORDER BY 操作可使用的最大 RAM 量 (以字节为单位) 。 建议值为可用系统内存的一半
0— 禁用使用外部内存执行ORDER BY。
max_bytes_before_remerge_sort
max_bytes_for_lazy_final
max_bytes_in_distinct
max_bytes_in_join
join_algorithm——请参阅该设置,了解各算法对应的行为 (落盘、重新分区、切换,或根据 join_overflow_mode 执行 throw/break) 。
可能的值:
- 正整数。
- 0 — 禁用内存控制。
max_bytes_in_set
max_bytes_ratio_before_external_group_by
GROUP BY 的可用内存占比。达到该比例后,
将使用外部内存进行聚合。
例如,如果设置为 0.6,GROUP BY 在执行开始时将允许使用 60% 的可用内存
(相对于 server/user/merges 可用的内存) ,之后将
开始使用外部聚合。
max_bytes_ratio_before_external_join
JOIN 使用的可用内存比例。达到该比例后,哈希 JOIN 会转换为 grace hash join,并将右侧数据落盘到磁盘。
例如,如果设置为 0.6,则在执行开始时,JOIN 允许右侧哈希表使用可用内存 (对 server/user/merges 可用) 的 60%;之后将开始落盘到磁盘。
如果同时设置了 max_bytes_before_external_join 和 max_bytes_ratio_before_external_join,则使用较小的结果阈值。如果该比例为 0,则仅应用绝对值设置。
仅当 join_algorithm 为 hash、parallel_hash、default 或 auto,且已配置临时数据路径时,此设置才生效。
max_bytes_ratio_before_external_sort
ORDER BY 使用的可用内存比例。达到该比例后,将使用外部排序。
例如,如果设置为 0.6,则在执行开始时,ORDER BY 可使用 60% 的可用内存 (对 server/user/merges 而言) ;超过该比例后,将开始使用外部排序。
请注意,max_bytes_before_external_sort 仍然有效,只有当排序块大于 max_bytes_before_external_sort 时才会落盘。
max_bytes_to_read
max_bytes_to_read_leaf
max_bytes_to_read=150,则会失败,因为总共需要读取 200 字节。而设置 max_bytes_to_read_leaf=150 的查询则会成功,因为叶节点最多只会读取 100 字节。
该限制会对每个已处理的数据块进行检查。
当
prefer_localhost_replica=1 时,此设置不稳定。max_bytes_to_sort
sort_overflow_mode 决定;该参数默认设置为 throw。