更新时间:2025-11-03 GMT+08:00

ALTER EXCEPT RULE

功能描述

修改一个异常规则集合,可以修改一组规则集中的任意一个或者多个具体的规则阈值。

注意事项

使用ALTER语法添加某个新规则阈值时,WITH参数中原来的其他的规则会保留,并不是全部清空覆盖。例如原来一组规则中只有一条规则:作业排队阻塞的最大时间blocktime = 100秒,通过以下语法新添加一条作业执行最大时间elapsedtime为1000秒,则最终的规则包含2条,可参见以下示例。

语法格式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
ALTER EXCEPT RULE except_rule_name
      WITH (
           | BLOCKTIME = VALUE,
           | CPUTIME = VALUE,
           | ELAPSEDTIME = VALUE, 
           | CPUSKEWPERCENT = VALUE,
           | SPILLSIZE = VALUE,
           | BROADCASTSIZE = VALUE,
           | MEMSIZE = VALUE,
           | CPUAVGPERCENT = VALUE,
           | BANDWIDTH = VALUE,
           | ACTION = ['abort' | 'penalty']
           );

参数说明

表1 ALTER EXCEPT RULE参数说明

参数

描述

取值范围

rule_name

异常规则集名称。

字符串,需符合标识符命名规范

blocktime

作业排队阻塞的最大时间。单位:秒。

数值型,-1,1~INT64_MAX。

elapsedtime

作业执行的最大时间。单位:秒。

数值型,-1,1~INT64_MAX。

allcputime

作业运行中使用的最大CPU时间。单位:秒。

数值型,-1,1~INT64_MAX。

cpuskewpercent

作业执行时的CPU使用倾斜率。单位:百分比。

数值型,-1,1~100。

cpuavgpercent

作业执行时的平均CPU使用率。单位:百分比。

数值型,-1,1~100。

spillsize

作业执行的最大下盘大小。单位:MB。

数值型,-1,1~INT64_MAX。

broadcastsize

作业执行的最大广播大小。单位:MB。

数值型,-1,1~INT64_MAX。

memsize

作业执行使用的最大内存大小。单位:MB。

数值型,-1,1~INT64_MAX。

bandwidth

作业执行可使用的最大网络带宽。单位:MB。

数值型,-1,1~INT64_MAX。

示例

创建异常规则except_rule1。

1
CREATE EXCEPT RULE except_rule_1 WITH (blocktime=2000, spillsize=3000, action=abort);

修改异常规则except_rule1的blocktime规则阈值为3000秒,下盘空间为4000MB。

1
ALTER EXCEPT RULE except_rule_1 WITH (blocktime=3000, spillsize=4000);

通过PG_EXCEPT_RULE系统表,可以查看异常规则已修改成功。

1
SELECT * FROM PG_EXCEPT_RULE WHERE name = 'except_rule_1';

同时,需要再叠加一条新规则,作业执行的最大时间elapsedtime为2000秒。

1
ALTER EXCEPT RULE except_rule_1 WITH (elapsedtime=2000);

再次查看异常规则,已修改成功。注意,原先的规则会保留,并不是清空。

1
SELECT * FROM PG_EXCEPT_RULE WHERE name = 'except_rule_1';

创建一个资源池并绑定异常规则集except_rule_1。

1
CREATE resource pool resource_pool_a1 WITH (except_rule='except_rule_1');

解除资源池resource_pool_a1绑定的异常规则集。

1
ALTER resource pool resource_pool_a1 WITH (except_rule='None');