这些设置可在 system.settings 中查看,并由 源代码 自动生成。
group_by_overflow_mode
类型
OverflowModeGroupBy
默认值
throw
设置当用于 聚合 的唯一键数量超过限制时的行为:
throw:抛出异常break:停止执行查询并返回部分结果any:继续对已进入集合的键进行聚合,但不再向集合中添加新键。
使用 any 值可以执行 GROUP BY 的近似计算。这种近似计算的效果取决于数据的统计特性。
group_by_top_k_optimization_observation_rows
类型
UInt64
默认值
65536
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.8 | 65536 | 新的实验性设置:在判定一个从未拒绝任何内容的完整 top-K 堆只会带来额外开销并将其冻结之前,每个聚合 stream 观察的行数。 |
对于 enable_group_by_top_k_optimization:在冻结一个完整 top-K 堆之前,每个聚合 stream 观察的行数;该堆跳过的输入行不足 10%,且驱逐的键数少于其容量。堆被冻结后,聚合会像禁用该优化一样继续执行。
有效窗口至少是堆预留大小的两倍,因此堆在接受评估前始终有机会填满。0 会禁用此冻结机制 (当边界并列集合增长到超过堆容量时,堆仍会被冻结) 。
这不会影响不含 ORDER BY 的 GROUP BY keys LIMIT K 查询,这类查询始终禁用冻结:该形态的执行计划包含一个合成排序,只有堆能够限制哈希表时才有收益,因此冻结堆会使执行计划比未优化的计划更慢。
group_by_two_level_threshold
类型
UInt64
默认值
100000
键的数量达到多少时开始启用两级聚合。0 表示未设置该阈值。
group_by_two_level_threshold_bytes
类型
UInt64
默认值
50000000
当聚合状态的大小达到多少字节时,开始使用两级聚合。0 表示未设置阈值。当至少一个阈值达到条件时,将使用两级聚合。
group_by_use_nulls
类型
Bool
默认值
0
更改 GROUP BY clause 处理聚合键类型的方式。
使用 ROLLUP、CUBE 或 GROUPING SETS 说明符时,某些聚合键可能不会用于生成某些结果行。
这些键对应的列会根据此设置,在相应行中填入默认值或 NULL。
Possible values:
- 0 — 使用聚合键类型的默认值来填补缺失值。
- 1 — ClickHouse 会按照 SQL 标准的方式执行
GROUP BY。聚合键的类型会转换为 Nullable。对于未使用相应聚合键的行,其对应列会填充为 NULL。
See also: