跳转到主要内容

概述

作为设置的一部分,ClickHouse 支持 对查询复杂度施加限制。这有助于防止 查询占用过多资源,从而让执行过程 更安全、也更可预测,尤其是在使用用户界面时。 几乎所有这些限制都只适用于 SELECT 查询;而在分布式 查询处理场景中,这些限制会在每台服务器上分别生效。 ClickHouse 通常只会在数据分区片段 完成处理后才检查这些限制,而不是对每一行都进行检查。这可能 导致在处理分区片段期间 就已经出现超出限制的情况。

overflow_mode 设置

大多数限制也都有 overflow_mode 设置,用于定义 超出限制时的处理方式,可取以下两个值之一:
  • throw:抛出异常 (默认) 。
  • break:停止执行查询并返回部分结果,就像 源数据已耗尽一样。

group_by_overflow_mode 设置

group_by_overflow_mode 设置还有 一个值 any
  • any:继续对已进入该集合的键进行聚合,但不再 将新键添加到该集合中。

设置列表

以下设置用于实施查询复杂度限制。
对“某项内容的最大值”的限制可以设为 0, 这表示其“不受限制”。

已废弃的设置

以下设置已废弃

max_pipeline_depth

最大管道深度。它表示每个 数据块在查询处理过程中经历的转换次数。该值是在单个 服务器的限制范围内计算的。如果管道深度超过该值,则会抛出异常。
最后修改于 2026年7月1日