返回首页

gbase数据、南大通用产品文档:GBase8cCREATE RESOURCE POOL

更新日期:2024年09月11日

功能描述
创建一个资源池,并指定此资源池相关联的控制组。
注意事项
只要用户对当前数据库有CREATE 权限,就可以创建资源池。
语法格式
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 }[, ... ])];
参数说明

pool_name
资源池名称。
资源池名称不能和当前数据库里已有的资源池重名。
取值范围:字符串,要符合标识符的命名规范。

group_name
控制组名称。
说明:
设置控制组名称时,语法可以使用双引号,也可以使用单引号。
group_name 对大小写敏感。
不指定group_name 时,默认指定的字符串为“Medium”
,代表指定DefaultClass 控制
组的“Medium” Timeshare 控制组。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
923
若数据库管理员指定自定义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 控制组。
取值范围:字符串,要符合说明中的规则,其指定已创建的控制组。

stmt
资源池语句执行的最大并发数量。
取值范围:数值型,-1~2147483647。

dop
资源池最大并发度,语句执行时能够创建的最多线程数量。
取值范围:数值型,1~2147483647

memory_size
资源池最大使用内存。
取值范围:字符串,内容范围1KB~2047GB

mem_percent
资源池可用内存占全部内存或者组用户内存使用的比例。
在多租户场景下,组用户和业务用户的mem_percent 范围1-100,默认为20。
在普通场景下,普通用户的mem_percent 范围为0-100,默认值为0。
说明:mem_percent 和memory_limit 同时指定时,只有mem_percent 起作用。

io_limits
资源池每秒可触发IO 次数上限。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
924
对于行存,以万次为单位计数,而列存则以正常次数计数。

io_priority
IO 利用率高达90%时,重消耗IO 作业进行IO 资源管控时关联的优先级等级。
包括三档可选:Low、Medium 和High。不控制时可设置为None。默认为None。
说明:io_limits 和io_priority 的设置都仅对复杂作业有效。
包括批量导入
(INSERT
INTO SELECT、COPY FROM、CREATE TABLE AS 等)
,单DN 数据量大约超过500MB 的
复杂查询和VACUUM FULL 等操作。

nodegroup
在逻辑集群模式下,指定逻辑集群名称。必须是存在的逻辑集群。
如果逻辑集群名称包含大写字符、特殊符号或以数字开头,SQL 语句中对逻辑集群名
称需要加双引号。

is_foreign
在逻辑集群模式下,指定当前资源池用于控制没有关联本逻辑集群的普通用户的资源。
这里的逻辑集群是由资源池nodegroup 字段指定的。
说明:
nodegroup 必须是存在的逻辑集群,不能是elastic_group 和安装的nodegroup
(group_version1)。
如果指定了is_foreign 为true,则资源池不能再关联用户,即不允许通过CREATE
USER … RESOURCE POOL 语句来将该资源池配置给用户。
该资源池自动检查用户是否关
联到资源池指定的逻辑集群,
如果用户没有关联到该逻辑集群,
则这些用户在逻辑集群所包
含的DN 上运行将受到该资源池的资源控制。
示例
本示例假定用户已预先成功创建控制组(创建控制组请参考设置控制组)


GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
925
--创建一个默认资源池,其控制组为"DefaultClass"组下属的"Medium" Timeshare Workload 控
制组。
gbase=#CREATE RESOURCE POOL pool1;
-- 创建一个资源池,
其控制组指定为"DefaultClass"组下属的"High" Timeshare Workload 控制
组。
gbase=#CREATE RESOURCE POOL pool2 WITH (CONTROL_GROUP="High");
-- 创建一个资源池,其控制组指定为"class1"组下属的"Low" Timeshare Workload 控制组。
gbase=#CREATE RESOURCE POOL pool3 WITH (CONTROL_GROUP="class1:Low");
-- 创建一个资源池,其控制组指定为"class1"组下属的"wg1" Workload 控制组。
gbase=#CREATE RESOURCE POOL pool4 WITH (CONTROL_GROUP="class1:wg1");
-- 创建一个资源池,其控制组指定为"class1"组下属的"wg2" Workload 控制组。
gbase=#CREATE RESOURCE POOL pool5 WITH (CONTROL_GROUP="class1:wg2:3");
--删除资源池。
gbase=#DROP RESOURCE POOL pool1;
gbase=#DROP RESOURCE POOL pool2;
gbase=#DROP RESOURCE POOL pool3;
gbase=#DROP RESOURCE POOL pool4;
gbase=#DROP RESOURCE POOL pool5;
相关命令
ALTER RESOURCE POOL,DROP RESOURCE POOL

node (192.168.146.40)
check table topology begin

当您关闭 Statement 和 ResultSet 对象时,可以使用环境变
量 OPTOFC 和 IFX_AUTOFREE 减少网络流量。
将 OPTOFC 设置为 1 来指定:如果已在客户端元组缓冲区检索到所有合格的行,
则 ResultSet.close() 方法不需要网络。在检索完所有的行后,数据库服务器自动关闭游标。

在调用下一个 ResultSet.next() 方法之前,
GBase 8s JDBC Driver 在客户端元组缓冲区中可能
有也可能没有附加的行。因此,除非 GBase 8s JDBC Driver 已经从数据库服务器检索到所
有的行,否则当 OPTOFC 设置为 1 时,ResultSet.close() 方法可能仍然需要网络往返。
将 IFX_AUTOFREE 设置为 1 以指定如果数据库服务器中的游标已经关闭,
则 Statement.close() 方法不需要网络往返来释放数据库服务器游标资源。
还可以使用 setAutoFree(boolean flag) 和 getAutoFree() 方法释放数据库服务器游标资源。有
关更多信息,请参阅“自动释放”特性。
当游标关闭后,数据库服务器显式地通过 ResultSet.close()方法或隐式地通过 OPTOFC 环境
变量自动释放游标资源。
当游标资源释放后,该游标不能再被引用。
有关如何使用 OPTOFC 和 IFX_AUTOFREE 环境变量的示例,
请参阅 示例代码文件 中描
述的 autofree.java optofc.java 演示示例。
在这些示例中,
使用 Properties.put() 方法设置变量。
有关 GBase 8s 环境变量的设置的更多信息,请参阅随同 GBase 8s JDBC 驱动程序的
GBase 8s 环境变量。