ALTER RESOURCE GROUP

更改一个资源组的限制项。

概要

ALTER RESOURCE GROUP name SET group_attribute value;

其中 group_attribute 如下:

CONCURRENCY integer
CPU_RATE_LIMIT integer 
CPUSET tuple 
MEMORY_LIMIT integer
MEMORY_SHARED_QUOTA integer
MEMORY_SPILL_RATIO integer

描述

ALTER RESOURCE GROUP 更改一个资源组的限制项。 只有超级用户才能修改资源组。

用户可以为控制角色最大活动并行度的资源组设置或者重置并行度的限制。用户还可以通过 为资源组重置内存或者 CPU 资源来控制所有通过资源组提交的查询在每个 Segment 主机上可以使用的内存或 CPU 总量。

当用户更改资源组 CPU 资源的模式或者限制时,新的模式或限制会立即生效。

当用户更改为角色创建的资源组的内存限制时,如果当前资源使用率小于或等于新值且资源组中没有正在运行的事务,则会立即应用新的资源限制。 如果当前资源使用量超过新内存限制值,或者其他资源组中存在运行事务在持有某些资源,则 YMatrix 数据库会推迟分配新限制,直到资源使用率落在新值的范围内。

当用户提升为外部组件创建的资源组的内存限制时,新的资源限制会随着资源可用而逐步生效。如果用户降低为外部组件创建的资源组的内存限制时,则表现是基于特定组件的。 比如说,如果用户降低为 PL / Container 运行时创建的资源组的内存限制,则正在运行的容器中的查询可能会因内存不足的错误而失败。

用户可以在单个 ALTER RESOURCE GROUP 调用中更改限制的类型。

参数

name

  • 要更改的资源组的名称。

CONCURRENCY integer

  • 用户为角色分配的资源组的允许的最大的事务并行数,包括活动和空闲的事务。 任何在 CONCURRENCY 的限制值达到后要提交的事务都会进入队列, 当一个运行的事务结束后,最早排队的事务会被执行。
    CONCURRENCY 值必须是在 [0 .. max_connections] 范围内的整数。用户为角色创建的资源组默认的 CONCURRENCY 值为 20。
    注意:用户不可以将 admin_group 的 CONCURRENCY 值设为零 (0)。

CPU_RATE_LIMIT integer

  • 为当前资源组分配的CPU资源的百分比。资源组的CPU资源最小百分比为 1,最大为 100。 为 YMatrix 数据库集群设置的所有资源租的 CPU_RATE_LIMIT 值总共不能超过 100。
    如果用户为之前设置过CPUSET的资源组修改CPU_RATE_LIMIT,CPUSET 会被禁用, 保留的 CPU 核返回给 YMatrix 数据库,CPUSET 被设置成 -1。

CPUSET tuple

  • 为当前资源组保留的 CPU 核。用户在 tuple 中指定的 CPU 核必须在系统上是可用的,而且用户不能将其他资源组中已指定的 CPU 核交叠分配给当前资源组。
    tuple 是以逗号分隔的单核数或核心间隔列表。 您必须用单引号括起 tuple,例如'1,3-4'。
    如果用户为之前设置过 CPU_RATE_LIMIT 的资源组修改 CPUSET ,CPU_RATE_LIMIT 会被禁用,保留的 CPU 资源会返还给 YMatrix 数据库,然后 CPU_RATE_LIMIT 会被设置为 -1。
    用户只能在启用了基于组管理资源的 YMatrix 数据库集群中为资源组修改 CPUSET。

MEMORY_LIMIT integer

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

MEMORY_SHARED_QUOTA integer

  • 为当前资源组中分配事务间共享的内存资源的百分比。 资源组中最小的共享内存分配比为 0,最大为 100,默认的 MEMORY_SHARED_QUOTA 值为 80。

MEMORY_SPILL_RATIO integer

  • 资源组中发出的事务中内存密集型运算符的内存使用量阈值。 资源组的最小内存溢出率百分比为 0.最大值为 100。 MEMORY_SPILL_RATIO 的默认值是 20。

注意

用 CREATE ROLE 或者 ALTER ROLE 来将一个指定资源组分配给角色(用户)。

用户不能在显式事务或者子事务中提交 ALTER RESOURCE GROUP 命令。

示例

更改资源组的活动事务限制:

ALTER RESOURCE GROUP rgroup1 SET CONCURRENCY 13;

更新资源组的 CPU 限制:

ALTER RESOURCE GROUP rgroup2 SET CPU_RATE_LIMIT 45;

更新资源组的内存限制:

ALTER RESOURCE GROUP rgroup3 SET MEMORY_LIMIT 30;

从默认值中提升资源组的内存溢出率:

ALTER RESOURCE GROUP rgroup4 SET MEMORY_SPILL_RATIO 25;

为资源组保留 CPU 核 1:

ALTER RESOURCE GROUP rgroup5 SET CPUSET '1';

兼容性

ALTER RESOURCE GROUP 语句是 YMatrix 数据库的扩展,在 PostgreSQL 标准中没有该命令。

另见

CREATE RESOURCE GROUPDROP RESOURCE GROUP