max_execution_speed
timeout_before_checking_execution_speed
超时后进行检查。如果执行速度过高,系统会降低执行速度。
max_execution_speed_bytes
timeout_before_checking_execution_speed
到期时,会在每个数据块上进行检查。如果执行速度过高,则会降低执行速度。
max_execution_time
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
max_execution_time 类似,但仅
适用于分布式或远程查询中的叶节点。
例如,如果我们希望将叶节点上的执行时间限制为 10s,但
对初始节点不设限制,那么在嵌套子查询的设置中,应使用 max_execution_time_leaf,而不是 max_execution_time:
max_execution_time_leaf 作为查询设置使用: