CREATE RESOURCE GROUP
You can use the CREATE RESOURCE GROUP statement to create a resource group.
Synopsis
- CreateResourceGroupStmt
- IfNotExists
- ResourceGroupName
- ResourceGroupOptionList
- DirectResourceGroupOption
- ResourceGroupPriorityOption
- ResourceGroupRunawayOptionList
- DirectResourceGroupRunawayOption
- WatchDurationOption
- ResourceGroupRunawayWatchOption
- ResourceGroupRunawayActionOption
CreateResourceGroupStmt ::=
   "CREATE" "RESOURCE" "GROUP" IfNotExists ResourceGroupName ResourceGroupOptionList
IfNotExists ::=
    ('IF' 'NOT' 'EXISTS')?
ResourceGroupName ::=
    Identifier
|   "DEFAULT"
ResourceGroupOptionList ::=
    DirectResourceGroupOption
|   ResourceGroupOptionList DirectResourceGroupOption
|   ResourceGroupOptionList ',' DirectResourceGroupOption
DirectResourceGroupOption ::=
    "RU_PER_SEC" EqOpt stringLit
|   "PRIORITY" EqOpt ResourceGroupPriorityOption
|   "BURSTABLE"
|   "BURSTABLE" EqOpt Boolean
|   "QUERY_LIMIT" EqOpt '(' ResourceGroupRunawayOptionList ')'
|   "QUERY_LIMIT" EqOpt '(' ')'
|   "QUERY_LIMIT" EqOpt "NULL"
|   "BACKGROUND" EqOpt '(' BackgroundOptionList ')'
|   "BACKGROUND" EqOpt '(' ')'
|   "BACKGROUND" EqOpt "NULL"
ResourceGroupPriorityOption ::=
    LOW
|   MEDIUM
|   HIGH
ResourceGroupRunawayOptionList ::=
    DirectResourceGroupRunawayOption
|   ResourceGroupRunawayOptionList DirectResourceGroupRunawayOption
|   ResourceGroupRunawayOptionList ',' DirectResourceGroupRunawayOption
DirectResourceGroupRunawayOption ::=
    "EXEC_ELAPSED" EqOpt stringLit
|   "ACTION" EqOpt ResourceGroupRunawayActionOption
|   "WATCH" EqOpt ResourceGroupRunawayWatchOption WatchDurationOption
WatchDurationOption ::=
    ("DURATION" EqOpt stringLit | "DURATION" EqOpt "UNLIMITED")?
ResourceGroupRunawayWatchOption ::=
    EXACT
|   SIMILAR
|   PLAN
ResourceGroupRunawayActionOption ::=
    DRYRUN
|   COOLDOWN
|   KILL
The resource group name parameter (ResourceGroupName) must be globally unique.
TiDB supports the following DirectResourceGroupOption, where Request Unit (RU) is a unified abstraction unit in TiDB for CPU, IO, and other system resources.
| Option | Description | Example | 
|---|---|---|
| RU_PER_SEC | Rate of RU backfilling per second | RU_PER_SEC = 500indicates that this resource group is backfilled with 500 RUs per second | 
| PRIORITY | The absolute priority of tasks to be processed on TiKV | PRIORITY = HIGHindicates that the priority is high. If not specified, the default value isMEDIUM. | 
| BURSTABLE | If the BURSTABLEattribute is set, TiDB allows the corresponding resource group to use the available system resources when the quota is exceeded. | |
| QUERY_LIMIT | When the query execution meets this condition, the query is identified as a runaway query and the corresponding action is executed. | QUERY_LIMIT=(EXEC_ELAPSED='60s', ACTION=KILL, WATCH=EXACT DURATION='10m')indicates that the query is identified as a runaway query when the execution time exceeds 60 seconds. The query is terminated. All SQL statements with the same SQL text will be terminated immediately in the coming 10 minutes.QUERY_LIMIT=()orQUERY_LIMIT=NULLmeans that runaway control is not enabled. See Runaway Queries. | 
Examples
Create two resource groups rg1 and rg2.
DROP RESOURCE GROUP IF EXISTS rg1;
Query OK, 0 rows affected (0.22 sec)
CREATE RESOURCE GROUP IF NOT EXISTS rg1
  RU_PER_SEC = 100
  PRIORITY = HIGH
  BURSTABLE;
Query OK, 0 rows affected (0.08 sec)
CREATE RESOURCE GROUP IF NOT EXISTS rg2
  RU_PER_SEC = 200 QUERY_LIMIT=(EXEC_ELAPSED='100ms', ACTION=KILL);
Query OK, 0 rows affected (0.08 sec)
SELECT * FROM information_schema.resource_groups WHERE NAME ='rg1' or NAME = 'rg2';
+------+------------+----------+-----------+---------------------------------+
| NAME | RU_PER_SEC | PRIORITY | BURSTABLE | QUERY_LIMIT                     |
+------+------------+----------+-----------+---------------------------------+
| rg1  | 100        | HIGH     | YES       | NULL                            |
| rg2  | 200        | MEDIUM   | NO        | EXEC_ELAPSED=100ms, ACTION=KILL |
+------+------------+----------+-----------+---------------------------------+
2 rows in set (1.30 sec)
MySQL compatibility
MySQL also supports CREATE RESOURCE GROUP. However, the acceptable parameters are different from that of TiDB so that they are not compatible.