跳到主要内容
版本: 最新版本-3.5

CREATE RESOURCE GROUP

CREATE RESOURCE GROUP 语句用于创建资源组。

更多信息,请参见资源组

提示

该操作需要 SYSTEM 级别的 CREATE RESOURCE GROUP 权限。您可以按照 GRANT 中的说明授予此权限。

语法

CREATE RESOURCE GROUP resource_group_name 
TO CLASSIFIER1, CLASSIFIER2, ...
WITH resource_limit

参数

  • resource_group_name:要创建的资源组的名称。

  • CLASSIFIER:用于过滤施加资源限制的查询的分类器。您必须使用 "key"="value" 对指定分类器。您可以为一个资源组设置多个分类器。

    分类器的参数如下:

    参数必需描述
    user用户名。
    role用户的角色。
    query_type查询的类型。支持 SELECTINSERT (从 v2.5 开始)。当 INSERT 任务命中 query_typeinsert 的资源组时,BE 节点会为任务预留指定的 CPU 资源。
    source_ip发起查询的 CIDR 块。
    db查询访问的数据库。可以用逗号 (,) 分隔字符串来指定。
    plan_cpu_cost_range查询的估计 CPU 成本范围。它的值与 fe.audit.log 中的字段 PlanCpuCost 含义相同,没有单位。格式为 [DOUBLE, DOUBLE)。默认值为 NULL,表示没有此类限制。从 v3.1.4 起支持此参数。
    plan_mem_cost_range查询的估计内存成本范围。它的值与 fe.audit.log 中的字段 PlanMemCost 含义相同,没有单位。格式为 [DOUBLE, DOUBLE)。默认值为 NULL,表示没有此类限制。从 v3.1.4 起支持此参数。
  • resource_limit:要对资源组施加的资源限制。您必须使用 "key"="value" 对指定资源限制。您可以为一个资源组设置多个资源限制。

    资源限制的参数如下:

    参数必需描述
    cpu_core_limit可以分配给 BE 上的资源组的 CPU 核心数的软限制。在实际业务场景中,分配给资源组的 CPU 核心数会根据 BE 上 CPU 核心的可用性按比例缩放。有效值:任何非零正整数。
    cpu_weight创建共享资源组的必需参数。它指定资源组在单个 BE 节点上的 CPU 调度权重,确定分配给来自该组的任务的 CPU 时间的相对份额。在实际业务场景中,分配给资源组的 CPU 核心数会根据 BE 上 CPU 核心的可用性按比例缩放。取值范围:(0, avg_be_cpu_cores],其中 avg_be_cpu_cores 是所有 BE 节点上的平均 CPU 核心数。该参数仅在设置为大于 0 时生效。cpu_weightexclusive_cpu_cores 中只能有一个设置为大于 0。
    exclusive_cpu_cores创建独占资源组(具有 CPU 硬限制)的必需参数。它意味着为此资源组专门保留 exclusive_cpu_cores 个 CPU 核心,即使在空闲时,其他组也无法使用这些核心,并且将资源组限制为仅使用这些保留的 CPU 核心,防止它使用来自其他组的可用 CPU 资源。取值范围:(0, min_be_cpu_cores - 1],其中 min_be_cpu_cores 是所有 BE 节点上的最小 CPU 核心数。仅当大于 0 时才生效。cpu_weightexclusive_cpu_cores 中只能有一个设置为大于 0。
    mem_limit可以用于查询的内存占 BE 提供的总内存的百分比。单位:% 有效值:(0, 1)。
    concurrency_limit资源组中并发查询的上限。它用于避免因并发查询过多导致系统过载。
    max_cpu_cores此资源组在单个 BE 节点上的 CPU 核心限制。仅当设置为大于 0 时才生效。范围:[0, avg_be_cpu_cores],其中 avg_be_cpu_cores 表示所有 BE 节点上的平均 CPU 核心数。默认值:0。
    big_query_cpu_second_limit大型查询占用 CPU 的时间上限。并发查询会将时间加起来。单位为秒。
    big_query_scan_rows_limit大型查询可以扫描的行数的上限。
    big_query_mem_limit大型查询的内存使用上限。单位为字节。

    注意

    在 v3.3.5 之前,StarRocks 允许将资源组的 type 设置为 short_query。但是,参数 type 已被弃用,并被 exclusive_cpu_cores 替换。对于任何现有类型的资源组,在升级到 v3.3.5 后,系统会自动将它们转换为独占资源组,其中 exclusive_cpu_cores 值等于 cpu_weight

示例

示例 1:基于多个分类器创建共享资源组 rg1

CREATE RESOURCE GROUP rg1
TO
(user='rg1_user1', role='rg1_role1', query_type in ('select'), source_ip='192.168.x.x/24'),
(user='rg1_user2', query_type in ('select'), source_ip='192.168.x.x/24'),
(user='rg1_user3', source_ip='192.168.x.x/24'),
(user='rg1_user4'),
(db='db1')
WITH ('cpu_weight' = '10',
'mem_limit' = '20%',
'big_query_cpu_second_limit' = '100',
'big_query_scan_rows_limit' = '100000',
'big_query_mem_limit' = '1073741824'
);

示例 2:基于多个分类器创建独占资源组 rg2

CREATE RESOURCE GROUP rg2
TO
(user='rg1_user5', role='rg1_role5', query_type in ('select'), source_ip='192.168.x.x/24'),
(user='rg1_user6', query_type in ('select'), source_ip='192.168.x.x/24'),
(user='rg1_user7', source_ip='192.168.x.x/24'),
(user='rg1_user8'),
(db='db2')
WITH ('exclusive_cpu_cores' = '10',
'mem_limit' = '20%',
'type' = 'normal',
'big_query_cpu_second_limit' = '100',
'big_query_scan_rows_limit' = '100000',
'big_query_mem_limit' = '1073741824'
);