ALTER RESOURCE GROUP
ALTER RESOURCE GROUP 语句用于在当前所选数据库中修改资源组。
语法图
AlterResourceGroupStmt

IfExists

ResourceGroupName

ResourceGroupOptionList

DirectResourceGroupOption

ResourceGroupPriorityOption

ResourceGroupRunawayOptionList

DirectResourceGroupRunawayOption

ResourceGroupRunawayWatchOption

ResourceGroupRunawayActionOption

BackgroundOptionList

DirectBackgroundOption

1. AlterResourceGroupStmt ::=
2. "ALTER" "RESOURCE" "GROUP" IfExists ResourceGroupName ResourceGroupOptionList
4. IfExists ::=
5. ('IF' 'EXISTS')?
7. ResourceGroupName ::=
8. Identifier
9. | "DEFAULT"
11. ResourceGroupOptionList ::=
12. DirectResourceGroupOption
13. | ResourceGroupOptionList DirectResourceGroupOption
14. | ResourceGroupOptionList ',' DirectResourceGroupOption
16. DirectResourceGroupOption ::=
17. "RU_PER_SEC" EqOpt stringLit
18. | "PRIORITY" EqOpt ResourceGroupPriorityOption
19. | "BURSTABLE"
20. | "BURSTABLE" EqOpt Boolean
21. | "QUERY_LIMIT" EqOpt '(' ResourceGroupRunawayOptionList ')'
22. | "QUERY_LIMIT" EqOpt '(' ')'
23. | "QUERY_LIMIT" EqOpt "NULL"
24. | "BACKGROUND" EqOpt '(' BackgroundOptionList ')'
25. | "BACKGROUND" EqOpt '(' ')'
26. | "BACKGROUND" EqOpt "NULL"
28. ResourceGroupPriorityOption ::=
29. LOW
30. | MEDIUM
31. | HIGH
33. ResourceGroupRunawayOptionList ::=
34. DirectResourceGroupRunawayOption
35. | ResourceGroupRunawayOptionList DirectResourceGroupRunawayOption
36. | ResourceGroupRunawayOptionList ',' DirectResourceGroupRunawayOption
38. DirectResourceGroupRunawayOption ::=
39. "EXEC_ELAPSED" EqOpt stringLit
40. | "ACTION" EqOpt ResourceGroupRunawayActionOption
41. | "WATCH" EqOpt ResourceGroupRunawayWatchOption "DURATION" EqOpt stringLit
43. ResourceGroupRunawayWatchOption ::=
44. EXACT
45. | SIMILAR
47. ResourceGroupRunawayActionOption ::=
48. DRYRUN
49. | COOLDOWN
50. | KILL
52. BackgroundOptionList ::=
53. DirectBackgroundOption
54. | BackgroundOptionList DirectBackgroundOption
55. | BackgroundOptionList ',' DirectBackgroundOption
57. DirectBackgroundOption ::=
58. "TASK_TYPES" EqOpt stringLit
TiDB 支持以下 DirectResourceGroupOption, 其中 Request Unit (RU) 是 TiDB 对 CPU、IO 等系统资源统一抽象的单位。
| 参数 | 含义 | 举例 |
|---|---|---|
RU_PER_SEC |
每秒 RU 填充的速度 | RU_PER_SEC = 500 表示此资源组每秒回填 500 个 RU。 |
PRIORITY |
任务在 TiKV 上处理的绝对优先级 | PRIORITY = HIGH 表示优先级高。若未指定则默认为 MEDIUM。 |
BURSTABLE |
允许对应的资源组超出配额后使用空余的系统资源。 | |
QUERY_LIMIT |
当查询执行满足该条件时,识别该查询为 Runaway Query 并执行相应的操作 | QUERY_LIMIT=(EXEC_ELAPSED=’60s’, ACTION=KILL, WATCH=EXACT DURATION=’10m’) 表示当执行时间超过 60 秒后识别为 Runaway Query,对该查询执行终止操作,并在 10 分钟内对同样的 SQL 直接执行终止操作。QUERY_LIMIT=() 或 QUERY_LIMIT=NULL 则表示不进行 Runaway 控制。具体参数介绍参见管理资源消耗超出预期的查询 (Runaway Queries)。 | |
BACKGROUND |
后台任务相关的设置。具体参数介绍参见管理后台任务 | BACKGROUND=(TASK_TYPES=”br,stats”) 表示将备份恢复和收集统计信息相关的任务作为后台任务调度。 |

注意
ALTER RESOURCE GROUP语句只能在全局变量 tidb_enable_resource_control 参数设置为ON时才能执行。ALTER RESOURCE GROUP语句支持以增量方式修改,未指定的参数保持不变。但其中QUERY_LIMIT和BACKGROUND各自作为一个整体,无法部分修改其中的参数。- 目前仅
default资源组支持修改BACKGROUND相关设置。
示例
创建一个名为 rg1 的资源组,并修改它的属性。
1. DROP RESOURCE GROUP IF EXISTS rg1;
1. Query OK, 0 rows affected (0.22 sec)
1. CREATE RESOURCE GROUP IF NOT EXISTS rg1
2. RU_PER_SEC = 100
3. BURSTABLE;
1. Query OK, 0 rows affected (0.08 sec)
1. SELECT * FROM information_schema.resource_groups WHERE NAME ='rg1';
1. +------+------------+----------+-----------+-------------+------------+
2. | NAME | RU_PER_SEC | PRIORITY | BURSTABLE | QUERY_LIMIT | BACKGROUND |
3. +------+------------+----------+-----------+-------------+------------+
4. | rg1 | 100 | MEDIUM | NO | NULL | NULL |
5. +------+------------+----------+-----------+-------------+------------+
6. 1 rows in set (1.30 sec)
1. ALTER RESOURCE GROUP rg1
2. RU_PER_SEC = 200
3. PRIORITY = LOW
4. QUERY_LIMIT = (EXEC_ELAPSED='1s' ACTION=COOLDOWN WATCH=EXACT DURATION '30s');
1. Query OK, 0 rows affected (0.08 sec)
1. SELECT * FROM information_schema.resource_groups WHERE NAME ='rg1';
1. +------+------------+----------+-----------+----------------------------------------------------------------+------------+
2. | NAME | RU_PER_SEC | PRIORITY | BURSTABLE | QUERY_LIMIT | BACKGROUND |
3. +------+------------+----------+-----------+----------------------------------------------------------------+------------+
4. | rg1 | 200 | LOW | NO | EXEC_ELAPSED='1s', ACTION=COOLDOWN, WATCH=EXACT DURATION='30s' | NULL |
5. +------+------------+----------+-----------+----------------------------------------------------------------+------------+
6. 1 rows in set (1.30 sec)
修改 default 资源组的后台任务 BACKGROUND 相关设置。
1. ALTER RESOURCE GROUP default BACKGROUND = (TASK_TYPES = "br,ddl");
1. Query OK, 0 rows affected (0.08 sec)
1. SELECT * FROM information_schema.resource_groups WHERE NAME ='default';
1. +---------+------------+----------+-----------+-------------+---------------------+
2. | NAME | RU_PER_SEC | PRIORITY | BURSTABLE | QUERY_LIMIT | BACKGROUND |
3. +---------+------------+----------+-----------+-------------+---------------------+
4. | default | UNLIMITED | MEDIUM | YES | NULL | TASK_TYPES='br,ddl' |
5. +---------+------------+----------+-----------+-------------+---------------------+
6. 1 rows in set (1.30 sec)
MySQL 兼容性
MySQL 也支持 ALTER RESOURCE GROUP,但是接受的参数和 TiDB 不同,两者并不兼容。
