# CREATE RESOURCE POOL
#### 功能描述
用于创建一个资源池，并指定此资源池相关联的控制组。
#### 注意事项
- 仅SYSADMIN或初始用户可以执行此操作。
- 升级期间不支持使用该语法。
 
#### 语法格式
```
CREATE RESOURCE POOL pool_name
    [WITH ({MEM_PERCENT=pct | CONTROL_GROUP="group_name" | ACTIVE_STATEMENTS=stmt | MAX_DOP = dop | MEMORY_LIMIT="memory_size" | io_limits=io_limits | io_priority="io_priority" | max_worker=max_worker | max_connections=max_connections | max_dynamic_memory="max_dynamic_memory" | max_shared_memory="max_shared_memory" | max_concurrency=concurrency}[, ... ])];
```
![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/figure/zh-cn_image_0000002764469524.png "点击放大")
#### 参数说明
- **pool_name**
  资源池名称。不能和当前数据库中已存在的资源池重名，需满足唯一约束。
  取值范围：字符串，要符合[标识符命名规范](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0003.html#ZH-CN_TOPIC_0000002793787739__section14873217506)。
  
- **group_name**
  控制组名称。
  取值范围：字符串，要符合如下说明中的规则：
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  - 设置控制组名称时，语法可以使用双引号，也可以使用单引号。
  
  - 控制组名称对大小写敏感。
  
  - 不指定group_name时，默认指定的字符串为 "Medium"，代表指定DefaultClass控制组的"Medium" Timeshare控制组。
  
  - 若数据库管理员指定自定义Class组下的Workload控制组，如control_group的字符串为："class1:workload1"；代表此资源池指定到class1控制组下的workload1控制组。也可同时指定Workload控制组的层次，如control_group的字符串为："class1:workload1:1"。
  
  - 若数据库用户指定Timeshare控制组代表的字符串，即"Rush"、"High"、"Medium"或"Low"其中一种，如control_group的字符串为"High"；代表资源池指定到DefaultClass控制组下的"High" Timeshare控制组。
  
  - 多租户场景下，组资源池关联的控制组为Class级别，业务资源池关联Workload控制组。且不允许在各种资源池间相互切换。
    
- **stmt**
  资源池语句执行的最大并发数量。
  取值范围：整数值型，-1\~2147483647‬。-1表示不限制，0表示禁止任何语句执行。
  
- **dop**
  资源池最大并发度，语句执行时能够创建的最多线程数量。
  取值范围：正整数类型，1\~2147483647‬。
  
- **memory_size**
  资源池最大使用内存。
  取值范围：字符串，内容范围1KB\~2047GB。
  
- **mem_percent**
  资源池可用内存占全部内存或者组用户内存使用的比例。
  - 在多租户场景下，组用户和业务用户的mem_percent范围1\~100，默认为20。
  
  - 在普通场景下，普通用户的mem_percent范围为0\~100，默认值为0。
  
  
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  mem_percent和memory_limit同时指定时，仅mem_percent生效。
  
- **io_limits**
  资源池每秒可触发I/O次数上限。以万次为单位计数。
  
- **io_priority**
  I/O利用率高达50%时，重消耗I/O作业进行I/O资源管控时关联的优先级等级。分为Low、Medium和High。
  不控制时可设置为None。默认为None。
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  io_limits和io_priority的设置都仅对复杂作业有效。包括批量导入（INSERT INTO SELECT、COPY FROM、CREATE TABLE AS等）、单DN数据量大约超过500MB的复杂查询和VACUUM FULL等操作。
  
 
- **max_worker**
  只用于扩容的接口，表示扩容数据重分布时，表内插入并发度。
  
- **max_connections**
  最大连接数，用于限制资源池可使用的最大连接数。
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  所有资源池的最大连接数总和不能超过整个数据库进程设置的GUC参数max_connections指定的最大连接数。
  

- **max_dynamic_memory**
  最大动态内存值，用于限制资源池允许使用的最大动态内存值。
  
- **max_shared_memory**
  最大共享内存值，用于限制资源池允许使用的最大共享内存值。
  
- **max_concurrency**
  最大并发数，用于限制资源池允许使用的最大并发数。
  
 #### 示例
本示例假定用户已预先成功创建控制组。若需创建控制组，请联系管理员处理。
```
-- 创建控制组（命令行执行）。
gs_ssh -c "gs_cgroup -c -S class1 -s 40" 
gs_ssh -c "gs_cgroup -c -S class1 -G wg1 -g 20"
gs_ssh -c "gs_cgroup -c -S class1 -G wg2 -g 20"
-- 使用gsql以管理员身份登录数据库。
-- 创建一个默认资源池，其控制组为"DefaultClass"组下属的"Medium" Timeshare Workload控制组。
gaussdb=# CREATE RESOURCE POOL pool1;
-- 创建一个资源池，其控制组指定为"DefaultClass"组下属的"High" Timeshare Workload控制组。
gaussdb=# CREATE RESOURCE POOL pool2 WITH (CONTROL_GROUP="High");
-- 创建一个资源池，其控制组指定为"class1"组下属的"Low" Timeshare Workload控制组。
gaussdb=# CREATE RESOURCE POOL pool3 WITH (CONTROL_GROUP="class1:Low");
-- 创建一个资源池，其控制组指定为"class1"组下属的"wg1" Workload控制组。
gaussdb=# CREATE RESOURCE POOL pool4 WITH (CONTROL_GROUP="class1:wg1");
-- 创建一个资源池，其控制组指定为"class1"组下属的"wg2" Workload控制组。
gaussdb=# CREATE RESOURCE POOL pool5 WITH (CONTROL_GROUP="class1:wg2:3");
-- 删除资源池。
gaussdb=# DROP RESOURCE POOL pool1;
gaussdb=# DROP RESOURCE POOL pool2;
gaussdb=# DROP RESOURCE POOL pool3;
gaussdb=# DROP RESOURCE POOL pool4;
gaussdb=# DROP RESOURCE POOL pool5;
-- 删除控制组（命令行执行）。
gs_ssh -c "gs_cgroup -d -S class1"
```
#### 相关链接
[ALTER RESOURCE POOL](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0202.html)，[DROP RESOURCE POOL](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0314.html)
