メインコンテンツまでスキップ
バージョン: Latest-3.4

CREATE RESOURCE GROUP

説明

リソースグループを作成します。

詳細については、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"ペアで指定する必要があります。リソースグループに対して複数のクラシファイアを設定できます。

    クラシファイアのパラメータは以下の通りです:

    ParameterRequiredDescription
    userNoユーザーの名前。
    roleNoユーザーの役割。
    query_typeNoクエリのタイプ。SELECTINSERT(v2.5から)がサポートされています。query_typeinsertとして設定されたリソースグループにINSERTタスクがヒットすると、BEノードはタスクのために指定されたCPUリソースを予約します。
    source_ipNoクエリが開始されるCIDRブロック。
    dbNoクエリがアクセスするデータベース。カンマ(,)で区切られた文字列で指定できます。
    plan_cpu_cost_rangeNoクエリの推定CPUコスト範囲。この値はfe.audit.logPlanCpuCostフィールドと同等の意味を持ち、単位はありません。形式は[DOUBLE, DOUBLE)です。デフォルト値はNULLで、制限がないことを示します。このパラメータはv3.1.4以降でサポートされています。
    plan_mem_cost_rangeNoクエリの推定メモリコスト範囲。この値はfe.audit.logPlanMemCostフィールドと同等の意味を持ち、単位はありません。形式は[DOUBLE, DOUBLE)です。デフォルト値はNULLで、制限がないことを示します。このパラメータはv3.1.4以降でサポートされています。
  • resource_limit: リソースグループに課されるリソース制限。リソース制限は"key"="value"ペアで指定する必要があります。リソースグループに対して複数のリソース制限を設定できます。

    リソース制限のパラメータは以下の通りです:

    ParameterRequiredDescription
    cpu_core_limitNoBEでリソースグループに割り当てられるCPUコア数のソフトリミット。実際のビジネスシナリオでは、リソースグループに割り当てられるCPUコアは、BEのCPUコアの可用性に基づいて比例的にスケールします。有効な値:0以外の正の整数。
    cpu_weightNo共有リソースグループを作成するために必要なパラメータ。単一の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_coresNo専用リソースグループ(CPUハードリミット付き)を作成するために必要なパラメータ。exclusive_cpu_cores CPUコアをこのリソースグループ専用に予約し、他のグループには利用できないようにし、アイドル時でも他のグループからの利用可能なCPUリソースを使用しないように制限します。値の範囲:(0, min_be_cpu_cores - 1]、ここでmin_be_cpu_coresはすべてのBEノードの最小CPUコア数です。0より大きい場合にのみ有効です。cpu_weightまたはexclusive_cpu_coresのいずれか一方のみが0より大きく設定できます。
    mem_limitNoBEが提供する総メモリのうち、クエリに使用できるメモリの割合。単位:%。有効な値:(0, 1)。
    concurrency_limitNoリソースグループ内の同時クエリの上限。過剰な同時クエリによるシステムの過負荷を防ぐために使用されます。
    max_cpu_coresNo単一のBEノードでのこのリソースグループのCPUコア制限。0より大きい場合にのみ有効です。範囲:[0, avg_be_cpu_cores]、ここでavg_be_cpu_coresはすべてのBEノードの平均CPUコア数を表します。デフォルト:0。
    big_query_cpu_second_limitNo大規模クエリのCPU占有時間の上限。同時クエリが時間を加算します。単位は秒です。
    big_query_scan_rows_limitNo大規模クエリによってスキャンされる行数の上限。
    big_query_mem_limitNo大規模クエリのメモリ使用量の上限。単位はバイトです。

    NOTE

    v3.3.5以前は、StarRocksはリソースグループのtypeshort_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'
);