关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
流计算引擎
灾难恢复
系统配置参数
索引
扩展
SQL 参考
常见问题(FAQ)
定义一个新的资源组。
CREATE RESOURCE GROUP name WITH (group_attribute=value [, ... ])
其中group_attribute是:
[ CONCURRENCY=<integer> ]
CPU_MAX_PERCENT=<integer> | CPUSET=<coordinator_cores>;<segment_cores>
[ CPU_WEIGHT=<integer> ]
[ MEMORY_QUOTA=<integer> ]
[ MIN_COST=<integer> ]
[ IO_LIMIT=' <tablespace_io_limit_spec> [; ...] ' ]
其中 <tablespace_io_limit_spec>
是:
<tablespace_name> | <oid> : <io_limit_option_spec> [, ...]
其中 <io_limit_option_spec>
是:
wbps=<io_limit_option_value>
| rbps=<io_limit_option_value>
| wiops=<io_limit_option_value>
| riops=<io_limit_option_value>
其中 <io_limit_option_vlaue>
是:
<integer> | max
为 YMatrix 数据库资源管理创建一个新的资源组。 您可以创建资源组来管理角色资源或管理 YMatrix 数据库外部组件(例如 PL/Container)的资源。
当启用资源组时,你创建的用于管理用户角色的资源组会确定该角色的并发事务、内存、CPU和磁盘I/O限制。你可以将此类资源组分配给一个或多个角色。
您创建的用于管理 YMatrix 数据库外部组件(例如 PL / Container)的资源的资源组会在启用资源组时标识该组件的内存和CPU限制。 这些资源组使用 cgroup 进行 CPU 和内存管理。 将资源组分配给外部组件是特定于组件的。 例如,当您配置 PL / Container 运行时时,您将分配一个 PL / Container 资源组。 您不能将为外部组件创建的资源组分配给角色,也不能将为角色创建的资源组分配给外部组件。
您必须具有SUPERUSER特权才能创建资源组。 YMatrix 数据库群集中允许的最大资源组数为 100。
YMatrix 数据库预定义了三个默认资源组:admin_group、default_group 和 system_group。这些组名以及组名none均为保留名称。
要为资源组设置适当的限制,YMatrix 数据库管理员必须熟悉通常在系统上执行的查询, 以及执行这些查询的用户/角色以及他们可能使用的外部组件,例如 PL / Containers。
创建资源组的角色后, 组分配给使用 ALTER ROLE 或 CREATE ROLE 命令一个或多个角色。
创建资源组以管理外部组件的 CPU 和内存资源后,将外部组件配置为使用该资源组。 例如,配置 PL/Container 运行时 resource_group_id。
name
CONCURRENCY integer
CPU_MAX_PERCENT integer
CPU_WEIGHT integer
100
。CPUSET <coordinator_cores>;<segment_cores>
注意!
创建资源组时,必须指定CPU_MAX_PERCENT
或CPUSET
,但不能同时指定两者。
将核心指定为以逗号分隔的单个核心编号或核心编号区间列表。首先定义 master cores,然后定义 segment cores,并用分号分隔两者。必须将完整的 cores 配置用单引号括起来。例如,'1;1,3-4' 将core 1 配置给 master,将core 1、3 和 4 配置给 segment。
注意!
只有在为 YMatrix 数据库集群启用基于资源组的资源管理之后,才能为资源组配置 CPUSET。
IO_LIMIT='<tablespace_io_limit_spec> [; ...]'
其中 <tablespace_io_limit_spec>
是:
<tablespace_name> | <oid> : <io_limit_option_spec> [, ...]
其中 <io_limit_option_spec>
是:
wbps=<io_limit_option_value>
| rbps=<io_limit_option_value>
| wiops=<io_limit_option_value>
| riops=<io_limit_option_value>
其中 <io_limit_option_vlaue>
是:
<integer> | max
使用此参数时,您可以指定:
*
为所有表空间设置限制。如果未设置参数 IO_LIMIT,则 rbps、wpbs、riops 和 wiopss 的默认值将设置为 max,这意味着没有磁盘 I/O 限制。
注意!
参数 IO_LIMIT 仅在使用 Groups v2 时可用。有关更多信息,请参阅使用资源组。
MEMORY_QUOTA integer
注意:如果设置了服务器配置参数 gp_resgroup_memory_query_fixed_mem,则其值将在会话级别覆盖 MEMORY_QUOTA 的值。
MIN_COST integer
这意味着低成本查询将执行得更快,因为它们不受资源限制。取值范围是0-500。默认值为0,表示不使用成本来绕过查询。
您不能在显式事务或子事务中提交 CREATE RESOURCE GROUP 命令。
使用 gp_toolkit.gp_resgroup_config 系统视图显示所有资源组的限制设置:
SELECT * FROM gp_toolkit.gp_resgroup_config;
创建一个CPU和内存配额为350 MB的资源组:
CREATE RESOURCE GROUP rgroup1 WITH (CPU_MAX_PERCENT=35, MEMORY_QUOTA=350);
创建一个资源组,其并发事务限制为 20,内存配额为 1500 MB,CPU 限制为 25,并且对 pg_default 表空间设置磁盘 I/O 限制:
CREATE RESOURCE GROUP rgroup2 WITH (CONCURRENCY=20,
MEMORY_QUOTA=1500, CPU_MAX_PERCENT=25,
IO_LIMIT=’pg_default: wbps=1000, rbps=1000, wiops=100, riops=100’);
创建一个资源组,其并发事务限制为 20,内存配额为 1500 MB,CPU限制为2 5,且对 oid 为 1663 的表空间设置磁盘 I/O 限制:
CREATE RESOURCE GROUP rgroup2 WITH (CONCURRENCY=20,
MEMORY_QUOTA=1500, CPU_MAX_PERCENT=25,
IO_LIMIT=’1663: wbps=1000, rbps=1000, wiops=100, riops=100’);
创建一个内存配额为 110 MB 的资源组,在 master 上为其分配CPU核心1,在 segment 上分配核心1至3:
CREATE RESOURCE GROUP rgroup3 WITH (CPUSET='1;1-3', MEMORY_QUOTA=110);
CREATE RESOURCE GROUP是 YMatrix 数据扩展。 在SQL标准中没有资源组或资源管理。
ALTER ROLE,CREATE ROLE,ALTER RESOURCE GROUP,DROP RESOURCE GROUP