CREATE RESOURCE GROUP

定义一个新的资源组。

概要

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

  • 此资源组允许的最大并发事务数,包括活动和空闲事务。 CONCURRENCY值必须是[0 .. max_connections]范围内的整数。 为角色定义的资源组的默认CONCURRENCY值为20。
    对于为外部组件创建的资源组,必须将CONCURRENCY设置为零(0)。
    注意:您不能将admin_group的CONCURRENCY值设置为零(0)。

CPU_MAX_PERCENT integer

  • 可选。资源组可使用的最大可用 CPU 资源的百分比。取值范围为 1-100。

CPU_WEIGHT integer

  • 可选。当前组的调度优先级。取值范围为1-500,默认值为100

CPUSET <coordinator_cores>;<segment_cores>

  • CPUSET 确定了在 master 和 segment 上为该资源组预留的CPU核心。您指定的CPU核心必须在系统中可用,且不能与为其他资源组指定的任何CPU核心重叠。

注意!
创建资源组时,必须指定 CPU_MAX_PERCENTCPUSET,但不能同时指定两者。

将核心指定为以逗号分隔的单个核心编号或核心编号区间列表。首先定义 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> [; ...]'

  • 可选。分配给特定资源组的查询的最大读写顺序磁盘I/O吞吐量,以及每秒最大读写I/O操作数。

其中 <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 

使用此参数时,您可以指定:

  • 您设置限制的表空间名称或表空间对象ID(OID)。使用 * 为所有表空间设置限制。
  • rbps 和 wbps 的值,用于限制资源组中最大的读写顺序磁盘 I/O 吞吐量,单位为 MB/S。默认值为 max,表示无限制。
  • riops 和 wiops 的值,用于限制资源组中每秒最大的读写 I/O 操作数。默认值为 max,表示无限制。

如果未设置参数 IO_LIMIT,则 rbps、wpbs、riops 和 wiopss 的默认值将设置为 max,这意味着没有磁盘 I/O 限制。

注意!
参数 IO_LIMIT 仅在使用 Groups v2 时可用。有关更多信息,请参阅使用资源组

MEMORY_QUOTA integer

  • 可选。为该资源组预留的最大可用内存(以MB为单位)。此值决定了在查询执行期间,资源组内所有工作进程在 segment 上可消耗的内存总量。
  • 你可以为资源组指定的最小内存量为 0。默认值为 -1。当你指定的 MEMORY_QUOTA 为 -1 时,MEMORY_QUOTA 将采用 statement_mem 服务器配置参数的值。

注意:如果设置了服务器配置参数 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 ROLECREATE ROLEALTER RESOURCE GROUPDROP RESOURCE GROUP