Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

max_execution_* 会话设置

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

max_execution_speed

类型
UInt64
默认值
0

每秒最大执行行数。在每个数据块上,都会在 timeout_before_checking_execution_speed 超时后进行检查。如果执行速度过高,系统会降低执行速度。

max_execution_speed_bytes

类型
UInt64
默认值
0

每秒允许的最大执行字节数。当 timeout_before_checking_execution_speed 到期时,会在每个数据块上进行检查。如果执行速度过高,则会降低执行速度。

max_execution_time

类型
默认值
0

查询的最大执行时间 (单位为秒) 。

max_execution_time 参数可能有些不好理解。 它的工作方式是根据当前查询的执行速度进行插值计算 (这种行为由 timeout_before_checking_execution_speed 控制) 。

如果预计执行时间超过指定的 max_execution_time,ClickHouse 将中断查询。 默认情况下,timeout_before_checking_execution_speed 设置为 10 秒。这意味着查询执行 10 秒后,ClickHouse 会开始估算总执行时间。比如,如果 max_execution_time 设置为 3600 秒 (1 小时) ,那么当估算出的执行时间超过 3600 秒限制时,ClickHouse 就会终止该查询。 如果将 timeout_before_checking_execution_speed 设置为 0,ClickHouse 将以实际时钟时间作为 max_execution_time 的依据。

如果查询运行时间超过指定秒数,其行为将由 timeout_overflow_mode 决定,默认值为 throw

max_execution_time_leaf

类型
默认值
0

其语义与 max_execution_time 类似,但仅 适用于分布式或远程查询中的叶节点。

例如,如果我们希望将叶节点上的执行时间限制为 10s,但 对初始节点不设限制,那么在嵌套子查询的设置中,应使用 max_execution_time_leaf,而不是 max_execution_time

SELECT count()
FROM cluster(cluster, view(SELECT * FROM t SETTINGS max_execution_time = 10));

我们可以将 max_execution_time_leaf 作为查询设置使用:

SELECT count()
FROM cluster(cluster, view(SELECT * FROM t)) SETTINGS max_execution_time_leaf = 10;
Navigation