CREATE RESOURCE GROUP

定义一个新的资源组。

概要

CREATE RESOURCE GROUP name WITH (group_attribute=value [, ... ])

其中group_attribute是:

CPU_RATE_LIMIT=integer | CPUSET=tuple
MEMORY_LIMIT=integer
[ CONCURRENCY=integer ]
[ MEMORY_SHARED_QUOTA=integer ]
[ MEMORY_SPILL_RATIO=integer ]
[ MEMORY_AUDITOR= {vmtracker | cgroup} ]

描述

为MatrixDB数据库资源管理创建一个新的资源组。 您可以创建资源组来管理角色资源或管理MatrixDB数据库外部组件(例如PL/Container)的资源。

启用资源组后,您创建的用于管理用户角色的资源组将标识该角色的并发事务,内存和CPU限制。 您可以将此类资源组分配给一个或多个角色。

您创建的用于管理MatrixDB数据库外部组件(例如PL/Container)的资源的资源组会在启用资源组时标识该组件的内存和CPU限制。 这些资源组使用cgroup进行CPU和内存管理。 将资源组分配给外部组件是特定于组件的。 例如,当您配置PL/Container运行时时,您将分配一个PL/Container资源组。 您不能将为外部组件创建的资源组分配给角色,也不能将为角色创建的资源组分配给外部组件。

您必须具有SUPERUSER特权才能创建资源组。 MatrixDB数据库群集中允许的最大资源组数为100。

MatrixDB数据库预定义了两个默认资源组:admin_group和default_group。 这些组名以及组名none均保留。

要为资源组设置适当的限制,MatrixDB数据库管理员必须熟悉通常在系统上执行的查询, 以及执行这些查询的用户/角色以及他们可能使用的外部组件,例如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_RATE_LIMIT integer

CPUSET tuple

  • 创建资源组时,只能指定CPU_RATE_LIMIT或CPUSET之一。
    CPU_RATE_LIMIT是分配给该资源组的CPU资源的百分比。 您可以为资源组指定的最小CPU百分比为1。 最大为100。 为MatrixDB数据库集群中定义的所有资源组指定的CPU_RATE_LIMIT值的总和必须小于或等于100。
    CPUSET标识要为此资源组保留的CPU核心。 您在tuple中指定的CPU核心必须在系统中可用,并且不能与您为其他资源组指定的任何CPU核心重叠。 tuple是用逗号分隔的单个核心号或核心号间隔的列表。 您必须将元组用单引号引起来,例如'1,3-4'。

MEMORY_LIMIT integer

  • 需要。分配给该资源组的MatrixDB数据库内存资源的总百分比。 您可以为资源组指定的最小内存百分比为0,最大为100。当设置为0时,MatrixDB不为该组分配任何预留内存,而是使用全局共享内存。并且MEMORY_SPILL_RATIO也要设置成0。
    MatrixDB数据库集群中所有资源组定义的MEMORY_LIMIT总和不能超过100。当总和小于100时,剩余部分为全局共享内存。

MEMORY_SHARED_QUOTA integer

  • 资源组中共享内存的配额。 具有MEMORY_SHARED_QUOTA阈值的资源组预留了分配给资源组以在事务之间共享的内存的百分比。 共享内存将按先到先得的原则分配。 事务可能不使用任何,部分或全部内存。 您可以为资源组指定的最小内存共享配额百分比为0。 最大为100。 默认的MEMORY_SHARED_QUOTA值为20。

MEMORY_SPILL_RATIO integer

  • 事务中内存密集型运算的内存使用量阈值。 当达到此阈值时,事务会溢出到磁盘。 您可以为资源组指定的最小内存溢出率百分比是0。 最大值是100。 默认的MEMORY_SPILL_RATIO值为20。

MEMORY_AUDITOR {vmtracker | cgroup}

  • 资源组的内存审核员。 MatrixDB数据库对角色资源使用虚拟内存跟踪,对外部组件使用的资源使用cgroup内存跟踪。 默认的MEMORY_AUDITOR为vmtracker。 使用vmtracker内存审核创建资源组时,MatrixDB数据库在内部跟踪该资源组的内存。
    当您创建指定cgroup MEMORY_AUDITOR的资源组时,MatrixDB数据库会将该资源组使用的内存记账推迟到cgroup。 对于您为外部组件(例如PL/Container)创建的资源组,CONCURRENCY必须为零(0)。 您不能将为外部组件创建的资源组分配给MatrixDB数据库角色。

注解

您不能在显式事务或子事务中提交CREATE RESOURCE GROUP命令。

使用gp_toolkit.gp_resgroup_config系统视图显示所有资源组的限制设置:

SELECT * FROM gp_toolkit.gp_resgroup_config;

示例

创建一个CPU和内存限制百分比为35的资源组:

CREATE RESOURCE GROUP rgroup1 WITH (CPU_RATE_LIMIT=35, MEMORY_LIMIT=35);

创建一个资源组,其并发事务限制为20,内存限制为15,CPU限制为25:

CREATE RESOURCE GROUP rgroup2 WITH (CONCURRENCY=20, 
  MEMORY_LIMIT=15, CPU_RATE_LIMIT=25);

创建一个资源组来管理PL/Container资源,指定内存限制为10,CPU限制为10:

CREATE RESOURCE GROUP plc_run1 WITH (MEMORY_LIMIT=10, CPU_RATE_LIMIT=10,
  CONCURRENCY=0, MEMORY_AUDITOR=cgroup);

创建一个内存限制百分比为11的资源组,并为其分配CPU核心1至3:

CREATE RESOURCE GROUP rgroup3 WITH (CPUSET='1-3', MEMORY_LIMIT=11);

兼容性

CREATE RESOURCE GROUP是MatrixDB数据扩展。 在SQL标准中没有资源组或资源管理。

另见

ALTER RESOURCE GROUP , DROP RESOURCE GROUP