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 否 查询的类型。支持 SELECT
和INSERT
(从 v2.5 开始)。当 INSERT 任务命中query_type
为insert
的资源组时,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_weight
和exclusive_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_weight
和exclusive_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'
);