更新时间:2025-07-10 GMT+08:00

CREATE RESOURCE POOL

功能描述

创建一个资源池,并指定此资源池相关联的控制组。

注意事项

只要用户对当前数据库有CREATE权限,就可以创建资源池。

语法格式

1
2
CREATE RESOURCE POOL pool_name
    [WITH ({MEM_PERCENT=pct | CONTROL_GROUP="group_name" | ACTIVE_STATEMENTS=stmt | MAX_DOP = dop | MEMORY_LIMIT='memory_size' | io_limits=io_limits | io_priority='priority' | nodegroup='nodegroup_name' | is_foreign = boolean | except_rule='except_rule' | weight=bandwidth_weight | enable_concurrency_scaling=boolean}[, ... ])];

参数说明

表1 CREATE RESOURCE POOL参数说明

参数

描述

取值范围

pool_name

资源池名称。

资源池名称不能和当前数据库里已有的资源池重名。

取值范围:字符串,要符合标识符的命名规范。

group_name

控制组名称。

取值范围:字符串,要符合说明中的规则,其指定已创建的控制组。

  • 设置控制组名称时,语法可以使用双引号,也可以使用单引号。
  • group_name对大小写敏感。
  • 不指定group_name时,默认指定的字符串为“Medium”,代表指定DefaultClass控制组的“Medium”Timeshare控制组。
  • 若数据库管理员指定自定义Class组下的Workload控制组,如control_group的字符串为:“class1:workload1”;代表此资源池指定到class1控制组下的workload1控制组。也可同时指定Workload控制组的层次,如control_group的字符串为:“class1:workload1:1”。
  • 若数据库用户指定Timeshare控制组代表的字符串,即“Rush”、“High”、“Medium”或“Low”其中一种,如control_group的字符串为“High”;代表资源池指定到DefaultClass控制组下的“High”Timeshare控制组。
  • 多租户场景下,组资源池关联的控制组为Class级别,业务资源池关联Workload控制组。且不允许在各种资源池间相互切换。

stmt

资源池语句执行的最大并发数量。

取值范围:数值型,-1~INT_MAX。

dop

资源池简单语句执行的最大并发数量。

取值范围:数值型,1~INT_MAX。

memory_size

使用该资源池的作业估算内存上限。

取值范围:字符串

  • default,表示最大为资源池内存一半。
  • unlimited,表示不限制。
  • 数值范围为1KB~2047GB。

mem_percent

资源池可用内存占全部内存或者组用户内存使用的比例。

在多租户场景下,组用户和业务用户的mem_percent范围1-100,默认为20。

在普通场景下,普通用户的mem_percent范围为0-100,默认值为0。

io_limits

该参数8.1.2版本中已废弃,为兼容历史版本保留该参数。

-

io_priority

该参数8.1.2版本中已废弃,为兼容历史版本保留该参数。

-

nodegroup

在逻辑集群模式下,指定资源池所属的逻辑集群名称。必须是存在的逻辑集群。

如果逻辑集群名称包含大写字符、特殊符号或以数字开头,SQL语句中对逻辑集群名称需要加双引号。

is_foreign

在逻辑集群模式下,指定当前资源池用于控制没有关联本逻辑集群的普通用户的资源。这里的逻辑集群是由资源池nodegroup字段指定的。

  • nodegroup必须是存在的逻辑集群,不能是elastic_group和安装的nodegroup (group_version1)。
  • 如果指定了is_foreign为true,则资源池不能再关联用户,即不允许通过CREATE USER ... RESOURCE POOL语句来将该资源池配置给用户。该资源池自动检查用户是否关联到资源池指定的逻辑集群,如果用户没有关联到该逻辑集群,则这些用户在逻辑集群所包含的DN上运行将受到该资源池的资源控制。

except_rule

异常规则集。

-

weight

资源池网络带宽权重。

-

enable_concurrency_scaling

弹性并发扩展功能开关。该功能仅9.1.0.100及以上集群版本支持。

取值范围:

  • true表示开启该资源池作业的弹性并发扩展功能。
  • false表示关闭该资源池作业的弹性并发扩展功能。

默认值:false

示例

本示例假定用户已预先成功创建控制组。

创建一个默认资源池,其控制组为“DefaultClass”组下属的“Medium”Timeshare Workload控制组:

1
CREATE RESOURCE POOL pool1;

创建一个资源池,其控制组指定为“DefaultClass”组下属的“High”Timeshare Workload控制组:

1
CREATE RESOURCE POOL pool2 WITH (CONTROL_GROUP="High");

创建一个资源池,其控制组指定为“class1”组下属的“Low”Timeshare Workload控制组:

1
CREATE RESOURCE POOL pool3 WITH (CONTROL_GROUP="class1:Low");

创建一个资源池,其控制组指定为“class1”组下属的“wg1”Workload控制组:

1
CREATE RESOURCE POOL pool4 WITH (CONTROL_GROUP="class1:wg1");

创建一个资源池,其控制组指定为“class1”组下属的“wg2”Workload控制组:

1
CREATE RESOURCE POOL pool5 WITH (CONTROL_GROUP="class1:wg2:3");

创建一个资源池,并打开该资源池的弹性并发扩展功能:

1
CREATE RESOURCE POOL pool6 WITH (enable_concurrency_scaling=true);