
# RESOURCE_MANAGER
#### 接口介绍
资源计划高级功能包RESOURCE_MANAGER用于在内核多租模式下分配、管理PDB的资源。
支持的所有接口请参见表 [表1 RESOURCE_MANAGER]。
 表1RESOURCE_MANAGER 
| 接口名称                                                                                                                          | 描述                    |
|:---|:---|
| [RESOURCE_MANAGER.CREATE_PENDING_AREA]           | 创建资源计划待决区。            |
| [RESOURCE_MANAGER.VALIDATE_PENDING_AREA]         | 校验资源计划待决区待提交的计划正确性。   |
| [RESOURCE_MANAGER.CLEAR_PENDING_AREA]              | 清空待决区，清空后待决区的所有修改均作废。 |
| [RESOURCE_MANAGER.SUBMIT_PENDING_AREA]          | 提交待决区，提交后待决区的资源计划生效。  |
| [RESOURCE_MANAGER.CREATE_RESOURCE_PLAN]         | 创建资源计划。               |
| [RESOURCE_MANAGER.UPDATE_RESOURCE_PLAN]           | 更新资源计划。               |
| [RESOURCE_MANAGER.DELETE_RESOURCE_PLAN]         | 删除资源计划。               |
| [RESOURCE_MANAGER.CREATE_RESOURCE_PLAN_DIRECTIVE] | 创建资源计划指令。             |
| [RESOURCE_MANAGER.UPDATE_RESOURCE_PLAN_DIRECTIVE] | 更新资源计划指令。             |
| [RESOURCE_MANAGER.DELETE_RESOURCE_PLAN_DIRECTIVE] | 删除资源计划指令。             |
   
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
高级包仅允许在主机的CDB内执行，PDB内部或者备机执行会报错。
- RESOURCE_MANAGER.CREATE_PENDING_AREA
  创建资源计划待决区，进入可编辑资源计划的状态。待决区是资源计划表gs_resource_plans和资源计划指令表gs_resource_plan_directives中待提交的改动数据。其中status字段显示为pending的数据对实际资源分配没有影响，在使用submit_pending_area接口提交待决区后，改动才会应用到实际资源分配中，同时status字段的值由pending变为active。整个实例仅有一份待决区数据，且不允许多个会话同时编辑。
  RESOURCE_MANAGER.CREATE_PENDING_AREA的函数原型：
  ```
  RESOURCE_MANAGER.CREATE_PENDING_AREA ()
  returns void
  ```
  ![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  如果其他会话已经创建并持有待决区，此时创建待决区将报错失败。
  
- RESOURCE_MANAGER.VALIDATE_PENDING_AREA
  验证待决区所有资源计划的正确性，验证点包括以下几点：
  - 任一资源计划分配的min_cpu之和不能超过环境最大CPU核数。
  
  - max_dynamic_memory之和不能超过CDB的max_dynamic_memory的90%（CDB的内存份额可通过gs_total_memory_detail视图获取）。
  
  - max_shared_memory之和不能超过CDB的max_shared_memory的90%。
  
  - max_connections之和不能超过CDB的max_connections的90%，同时不能超过CDB的max_connections减去CDB已经占用的连接数。
  
  - 正在使用的资源计划为所有open状态的PDB均分配了资源。
  
  
  ![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  如果分配内存/连接数到PDB后将导致CDB的可用内存或连接数资源不足，校验将报错失败。
  RESOURCE_MANAGER.VALIDATE_PENDING_AREA的函数原型：
  ```
  RESOURCE_MANAGER.VALIDATE_PENDING_AREA()
  returns void
  ```
  
- RESOURCE_MANAGER.CLEAR_PENDING_AREA
  清空待决区：把创建待决区时在系统表gs_resource_plans和gs_resource_plan_directives表的状态为pending的待决区数据全部删除，并释放待决区。待决区的所有修改均作废。
  RESOURCE_MANAGER.CLEAR_PENDING_AREA的函数原型：
  ```
  RESOURCE_MANAGER.CLEAR_PENDING_AREA()
  returns void
  ```
  
- RESOURCE_MANAGER.SUBMIT_PENDING_AREA
  提交待决区：生效PendingArea中的待决区计划指令，并释放待决区。如果待决区涉及改动当前使用的计划，提交待决区会使得资源按照新的改动进行分配。提交前会对PendingArea做一次资源配额的校验，具体校验规则与RESOURCE_MANAGER.VALIDATE_PENDING_AREA相同。
  RESOURCE_MANAGER.SUBMIT_PENDING_AREA的函数原型：
  ```
  RESOURCE_MANAGER.SUBMIT_PENDING_AREA()
  returns void
  ```
  
- RESOURCE_MANAGER.CREATE_RESOURCE_PLAN
  创建资源计划：在gs_resource_plans系统表创建一条状态为pending的待决区资源计划。
  RESOURCE_MANAGER.CREATE_RESOURCE_PLAN的函数原型：
  ```
  RESOURCE_MANAGER.CREATE_RESOURCE_PLAN(
      name                   name,
      comment                text DEFAULT NULL::text
  )
  ```
     
  表2RESOURCE_MANAGER.CREATE_RESOURCE_PLAN接口参数说明 
  | **参数**  | **参数类型** | **输入** **/** **输出** | **参数值范围** | **是否必传** **/** **默认值** | **描述**  |
  |:---|:---|:---|:---|:---|:---|
  | name    | name     | 输入                  | /         | 是                      | 计划名称。   |
  | comment | text     | 输入                  | /         | 否/空                    | 对计划的描述。 |
     
  
- RESOURCE_MANAGER.UPDATE_RESOURCE_PLAN
  更新资源计划：更新PendingArea中指定资源计划的说明。
  RESOURCE_MANAGER.UPDATE_RESOURCE_PLAN的函数原型：
  ```
  RESOURCE_MANAGER.UPDATE_RESOURCE_PLAN(
      name                   name,
      comment                text DEFAULT NULL::text
  )
  ```
     
  表3RESOURCE_MANAGER.UPDATE_RESOURCE_PLAN接口参数说明 
  | **参数**  | **参数类型** | **输入** **/** **输出** | **参数值范围** | **是否必传** **/** **默认值** | **描述**  |
  |:---|:---|:---|:---|:---|:---|
  | name    | name     | 输入                  | /         | 是                      | 计划名称。   |
  | comment | text     | 输入                  | /         | 否**/空**                | 对计划的描述。 |
     
  
- RESOURCE_MANAGER.DELETE_RESOURCE_PLAN
  删除资源计划：删除PendingArea中指定的资源计划，并删除该计划下所有的资源指令。
  RESOURCE_MANAGER.DELETE_RESOURCE_PLAN的函数原型：
  ```
  RESOURCE_MANAGER.DELETE_RESOURCE_PLAN(
      name                   name
  )
  ```
  表4RESOURCE_MANAGER.DELETE_RESOURCE_PLAN接口参数说明 
  | **参数** | **参数类型** | **输入** **/** **输出** | **参数值范围** | **是否必传** **/** **默认值** | **描述** |
  |:---|:---|:---|:---|:---|:---|
  | name   | name     | 输入                  | /         | 是                      | 计划名称。  |
     
  
- RESOURCE_MANAGER.CREATE_RESOURCE_PLAN_DIRECTIVE
  创建计划指令：在PendingArea中，为指定计划创建一条属于指定PDB的资源配额指令，为该PDB分配资源。
  RESOURCE_MANAGER.CREATE_RESOURCE_PLAN_DIRECTIVE的函数原型：
  ```
  RESOURCE_MANAGER.CREATE_RESOURCE_PLAN_DIRECTIVE (
      plan_name                   name DEFAULT NULL::name,
      pdb_name                    name,
      min_cpu                     integer DEFAULT (-1),
      max_dynamic_memory          name DEFAULT NULL::name,
      max_shared_memory           name DEFAULT NULL::name,
      max_connections             integer DEFAULT (-1),
      io_limits                   integer DEFAULT 0,
      io_priority                 name DEFAULT NULL::name,
      comment                     text DEFAULT NULL::text
  )
  ```
  表5RESOURCE_MANAGER.CREATE_RESOURCE_PLAN_DIRECTIVE接口参数说明 
  | **参数**             | **参数** **类型** | **输入** **/** **输出** | **参数值** **范围**                                                                                                                                                                                                                                                | **是否必传** **/** **默认值**   | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  |:---|:---|:---|:---|:---|:---|
  | plan_name          | name          | 输入                  | /                                                                                                                                                                                                                                                             | 否/ default_resource_plan | 计划名称。本字段大小写不敏感。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | pdb_name           | name          | 输入                  | /                                                                                                                                                                                                                                                             | 是                        | pdb名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  | min_cpu            | integer       | 输入                  | \>=1                                                                                                                                                                                                                                                          | 是                        | 保证PDB可用的cpu个数，不允许超过CDB的最大核数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | max_dynamic_memory | name          | 输入                  | \>=1G，（-1）                                                                                                                                                                                                                                                    | 否/-1不控制                  | PDB允许使用的动态内存上限， 不允许超过CDB的max_dynamic_memory(CDB下pv_total_memory_detail系统函数可查)的90%。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | max_shared_memory  | name          | 输入                  | \>=256MB，（-1）                                                                                                                                                                                                                                                 | 否/-1不控制                  | PDB允许使用的共享缓存上限， 不允许超过CDB的max_shared_memory(CDB下pv_total_memory_detail系统函数可查)的90%。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  | max_connection     | integer       | 输入                  | \>= 10，（-1）                                                                                                                                                                                                                                                   | 否/ -1 不控制                | PDB允许最大的连接数， 不允许超过CDB的max_connections的90%。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | io_limits          | integer       | 输入                  | \>=0                                                                                                                                                                                                                                                          | 否/0 不控制                  | 每秒触发I/O的次数上限。行存单位是io_control_unit（默认6000）次/s。0表示不控制。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | io_priority        | name          | 输入                  | None/ Low/ Medium/ High | 否/None 不控制               | 当磁盘I/O利用率达到50%时，该字段生效。高中低过去3s内平均I/O速度上限。 - High：生效时，为过去3s内平均I/O速度的50%，最低不得低于50。  - Medium：生效时，为过去3s内平均I/O速度的20%，最低不得低于20。  - Low：生效时，为过去3s内平均I/O速度的10%，最低不得低于10。   |
  | comment            | text          | 输入                  | /                                                                                                                                                                                                                                                             | 否/空                      | 对计划指令的描述。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
     
  
- RESOURCE_MANAGER.UPDATE_RESOURCE_PLAN_DIRECTIVE 更新计划指令：在PendingArea中，更新指定计划指定PDB的资源配额。即更新gs_resource_plan_directives系统表中一条状态为Pending的记录。只修改传入的参数，未传入的参数值不被修改。
  RESOURCE_MANAGER.UPDATE_RESOURCE_PLAN_DIRECTIVE的函数原型：
  ```
  create or replace function RESOURCE_MANAGER.update_resource_plan_directive (
      plan_name                   name DEFAULT NULL::name,
      pdb_name                    name,
      min_cpu                     integer DEFAULT NULL::integer,
      max_dynamic_memory          name DEFAULT NULL::name,
      max_shared_memory           name DEFAULT NULL::name,
      max_connections             integer DEFAULT (-1),
      io_limits                   integer DEFAULT NULL::integer,
      io_priority                 name DEFAULT NULL::name,
      comment                     text DEFAULT NULL::text
  )
  ```
  表6RESOURCE_MANAGER.UPDATE_RESOURCE_PLAN_DIRECTIVE接口参数说明 
  | **参数**             | **参数** **类型** | **输入** **/** **输出** | **参数值** **范围**                                                                                                                                                                      | **是否必传** **/** **默认值** | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  |:---|:---|:---|:---|:---|:---|
  | plan_name          | name                                                                                     | 输入                                                                                             | /                                                                                                                                                                                                                                                             | 否/ default_resource_plan                                                                         | 计划名称。本字段大小写不敏感。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | pdb_name           | name                                                                                     | 输入                                                                                             | /                                                                                                                                                                                                                                                             | 是                                                                                                | pdb名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | min_cpu            | integer                                                                                  | 输入                                                                                             | \>=1                                                                                                                                                                                                                                                          | 否/NULL不做变更                                                                                       | 保证PDB可用的cpu个数，不允许超过CDB的最大核数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | max_dynamic_memory | name                                                                                     | 输入                                                                                             | \>=1G                                                                                                                                                                                                                                                         | 否/NULL不做变更                                                                                       | PDB允许使用的动态内存上限， 不允许超过CDB的max_dynamic_memory(CDB下pv_total_memory_detail系统函数可查)的90%。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | max_shared_memory  | name                                                                                     | 输入                                                                                             | \>=256MB                                                                                                                                                                                                                                                      | 否/NULL不做变更                                                                                       | PDB允许使用的共享缓存上限，不允许超过CDB的max_shared_memory(CDB下pv_total_memory_detail系统函数可查)的90%。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  | max_connection     | integer                                                                                  | 输入                                                                                             | \>= 10                                                                                                                                                                                                                                                        | 否/NULL不做变更                                                                                       | PDB允许最大的连接数，不允许超过CDB的max_connections的90%。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | io_limits          | integer                                                                                  | 输入                                                                                             | \>=0                                                                                                                                                                                                                                                          | 否/NULL不做变更                                                                                       | 每秒触发I/O的次数上限。行存单位是io_control_unit（默认6000）次/s。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | io_priority        | name                                                                                     | 输入                                                                                             | None/ Low/ Medium/ High | 否/NULL不做变更                                                                                       | 当磁盘I/O利用率达到50%时，该字段生效。高中低过去3s内平均I/O速度上限。 - High：生效时，为过去3s内平均I/O速度的50%，最低不得低于50。  - Medium：生效时，为过去3s内平均I/O速度的20%，最低不得低于20。  - Low：生效时，为过去3s内平均I/O速度的10%，最低不得低于10。   |
  | comment            | text                                                                                     | 输入                                                                                             | /                                                                                                                                                                                                                                                             | 否/NULL不做变更                                                                                       | 对计划指令的描述。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
     
  
- RESOURCE_MANAGER.DELETE_RESOURCE_PLAN_DIRECTIVE
  删除计划指令: 在PendingArea中，为指定计划删除一条属于指定PDB的资源配额的指令。
  RESOURCE_MANAGER.DELETE_RESOURCE_PLAN_DIRECTIVE的函数原型：
  ```
  RESOURCE_MANAGER.DELETE_RESOURCE_PLAN_DIRECTIVE (
      plan_name                   name DEFAULT NULL::name,
      pdb_name                    name
  )
  returns void
  ```
  表7RESOURCE_MANAGER.DELETE_RESOURCE_PLAN_DIRECTIVE接口参数说明 
  | **参数**    | **参数类型** | **输入** **/** **输出** | **是否必传** **/** **默认值**   | **描述** |
  |:---|:---|:---|:---|:---|
  | plan_name | name     | 输入                  | 否/ default_resource_plan | 计划名称。  |
  | pdb_name  | name     | 输入                  | 是                        | pdb名称。 |
     
  ![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  创建并提交多个资源计划后，可以通过[ALTER SYSTEM SET](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0510.html#ZH-CN_TOPIC_0000002559108001)语法变更当前生效的资源计划。
  
 
