Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

group_by_* 会话设置

这些设置可在 system.settings 中查看,并由 源代码 自动生成。

group_by_overflow_mode

类型
OverflowModeGroupBy
默认值
throw

设置当用于 聚合 的唯一键数量超过限制时的行为:

  • throw:抛出异常
  • break:停止执行查询并返回部分结果
  • any:继续对已进入集合的键进行聚合,但不再向集合中添加新键。

使用 any 值可以执行 GROUP BY 的近似计算。这种近似计算的效果取决于数据的统计特性。

group_by_top_k_optimization_observation_rows

Experimental 功能
类型
UInt64
默认值
65536
版本历史
版本默认值注释
26.865536新的实验性设置:在判定一个从未拒绝任何内容的完整 top-K 堆只会带来额外开销并将其冻结之前,每个聚合 stream 观察的行数。

对于 enable_group_by_top_k_optimization:在冻结一个完整 top-K 堆之前,每个聚合 stream 观察的行数;该堆跳过的输入行不足 10%,且驱逐的键数少于其容量。堆被冻结后,聚合会像禁用该优化一样继续执行。

有效窗口至少是堆预留大小的两倍,因此堆在接受评估前始终有机会填满。0 会禁用此冻结机制 (当边界并列集合增长到超过堆容量时,堆仍会被冻结) 。

这不会影响不含 ORDER BYGROUP 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 处理聚合键类型的方式。 使用 ROLLUPCUBEGROUPING SETS 说明符时,某些聚合键可能不会用于生成某些结果行。 这些键对应的列会根据此设置,在相应行中填入默认值或 NULL

Possible values:

  • 0 — 使用聚合键类型的默认值来填补缺失值。
  • 1 — ClickHouse 会按照 SQL 标准的方式执行 GROUP BY。聚合键的类型会转换为 Nullable。对于未使用相应聚合键的行,其对应列会填充为 NULL

See also:

Navigation