SET SESSION RUNTIMECAP
设置查询和存储过程可以在给定会话中运行的最长时间。如果查询或存储过程超出其会话的 RUNTIMECAP
,Vertica 将终止它并返回错误。不能将 RUNTIMECAP
增加到超出用户配置文件中设置的限制。
注意
Vertica 不严格执行会话RUNTIMECAP
设置。如果对查询或存储过程进行计时,您可能会发现其运行时间超出了 RUNTIMECAP
设置。
语法
SET SESSION RUNTIMECAP duration
参数
- duration
- 指定给定查询可以在当前会话中运行的时间,为以下几项之一:
-
NONE
(默认值):移除所有当前会话查询的运行时限制。 -
'interval'
:将当前会话查询的最长运行时间指定为间隔,最长为一年,例如,1 minute
或100 seconds
。 -
=DEFAULT
:将此会话中查询的最长运行时间设置为用户的RUNTIMECAP
值。
-
特权
-
超级用户可以将会话
RUNTIMECAP
增加到任意值。 -
非超级用户只能将会话
RUNTIMECAP
设置为不大于自己的用户RUNTIMECAP
的值。
示例
将当前会话的最大查询运行时设置为 10 分钟:
=> SET SESSION RUNTIMECAP '10 minutes';
将会话 RUNTIMECAP
恢复为您的用户默认设置:
=> SET SESSION RUNTIMECAP =DEFAULT;
SET
=> SHOW RUNTIMECAP;
name | setting
------------+-----------
runtimecap | UNLIMITED
(1 row)
将 RUNTIMECAP 设置为 1 SECOND
并使用无限循环运行匿名过程:
=> SET SESSION RUNTIMECAP '1 SECOND';
SET
=> DO $$
BEGIN
LOOP
END LOOP;
END;
$$;
ERROR 0: Query exceeded maximum runtime
HINT: Change the maximum runtime using SET SESSION RUNTIMECAP