
# 创建SQL限流任务
#### 功能介绍
根据具体范围和类型，进行限流任务的创建。
- 调用接口前，您需要了解API [认证鉴权](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_011.html)。
- 调用接口前，您需要提前获取到[地区和终端节点](https://developer.huaweicloud.com/endpoint)。
 
#### 调试
您可以在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=GaussDBforopenGauss&api=CreateLimitTask)中调试该接口。
#### 接口约束
- 分布式实例不支持SQLID类型和自治限流任务。
- 不支持对系统级别用户（例如root等）进行SQL限流。
- 每个实例最多支持1000条限流任务。
- 对于关键词限流任务，一个关键词中包含英文逗号视作以逗号分隔的两个关键词，作用时不区分关键词前后顺序。
- 限流功能仅支持8.0及以上版本实例。
 
#### URI
POST /v3/{project_id}/instances/{instance_id}/limit-task
表1参数说明 
| 名称          | 是否必选 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|
| project_id  | 是    | **参数解释：** 租户在某一Region下的项目ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_196.html)。 **约束限制：** 不涉及。 **取值范围：** 只能由英文字母、数字组成，且长度为32个字符。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| instance_id | 是    | **参数解释：** 实例ID，此参数是用户创建实例的唯一标识。请参考[查询数据库实例列表 - QueryingDBInstances](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_328.html)接口获取实例ID。 **约束限制：** 不涉及。 **取值范围：** 只能由英文字母、数字组成，且长度为36个字符。 **默认取值** **：** 不涉及。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释：** 用户Token。 通过调用IAM服务[获取用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)接口获取。 请求响应成功后在响应消息头中包含的"X-Subject-Token"的值即为Token值。 **约束限制：** 不涉及。 **取值范围** **：** 不涉及。 **默认取值** **：** 不涉及。                                                                                                     |
| X-Language   | 否    | String | **参数解释：** 指定接口返回信息的语言类型。 **约束限制：** 不涉及。 **取值范围** **：** - **zh-cn：**中文  - **en-us** **：**英文   **默认取值** **：** **en-us** |
   
表3请求Body参数 
| 参数                 | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| task_scope         | 是    | String           | **参数解释** **：** 限流任务范围。 **约束限制** **：** 不涉及。 **取值范围** **：** 目前支持SQL，SESSION两种级别范围。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| start_time         | 否    | String           | **参数解释** **：** 任务开始时间。 **约束限制** **：** 当"task_scope"为SQL时必传。 格式必须为yyyy-mm-ddThh:mm:ss+0000。 **取值范围** **：** 大于等于当前时间（UTC时间）的前两分钟。 **默认取值** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| end_time           | 否    | String           | **参数解释** **：** 任务结束时间。 **约束限制** **：** 当"task_scope"为SQL时必传。 格式必须为yyyy-mm-ddThh:mm:ss+0000。 **取值范围** **：** 大于任务开始时间。 **默认取值** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| limit_type         | 是    | String           | **参数解释** **：** 限流类型。 **约束限制** **：** - 当"task_scope"为SQL时，可选SQL_ID、SQL_TYPE类型。  - 当"task_scope"为SESSION时，可选SESSION_ACTIVE_MAX_COUNT类型。   **取值范围** **：** - SQL_ID：模板的SQL_ID。  - SQL_TYPE：SQL类型。  - SESSION_ACTIVE_MAX_COUNT：利用率阈值。   **默认取值** **：** 不涉及。 |
| limit_type_value   | 是    | String           | **参数解释** **：** 限流类型值。 **约束限制** **：** 不涉及。 **取值范围** **：** - 当"limit_type"为SQL_ID类型时，该值为选中模板的sql_id。  - 当"limit_type"为SQL_TYPE类型时，值为SQL类型，目前支持select，update，insert，delete，merge。  - 当"limit_type"为SESSION_ACTIVE_MAX_COUNT类型时，只支持CPU_OR_MEMORY一种值。   **默认取值** **：** 不涉及。                                                                                                                                                                                     |
| key_words          | 否    | String           | **参数解释：** 关键词。 **约束限制** **：** 当"limit_type"为SQL_TYPE时，必传。 **取值范围** **：** 多个关键词以逗号隔开，数量范围为\[2，100\]个，每个关键词长度范围\[2，64\]位，关键词不允许包含 " 或 \\ 或 {} 或 null值以及非首尾的空格符。 **默认取值** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| task_name          | 是    | String           | **参数解释** **：** 限流任务名称。 **约束限制** **：** 不涉及。 **取值范围** **：** 只能为英文字母大小写，下划线，数字和$符，最大长度为100个字符。 **默认取值** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| sql_model          | 否    | String           | **参数解释** **：** SQL模板。 **约束限制** **：** 如果"limit_type"为SQLID，必传。 **取值范围** **：** 不涉及。 **默认取值** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| parallel_size      | 是    | Integer          | **参数解释** **：** 并发数。 **约束限制** **：** 大于等于零的整数。 **取值范围** **：** \[0, 2147483647\] **默认取值** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| cpu_utilization    | 否    | Integer          | **参数解释** **：** CPU利用率阈值。 **约束限制** **：** 如果"limit_type"为SESSION_ACTIVE_MAX_COUNT，则"cpu_utilization"必选。 不支持和内存利用率阈值同时为0，如果选择只限制CPU、内存中的其中一个，则另一个必须传值0。 **取值范围** **：** 整数，取值范围\[0,100）。 **默认取值** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| memory_utilization | 否    | Integer          | **参数解释** **：** 内存利用率阈值。 **约束限制** **：** 如果"limit_type"为SESSION_ACTIVE_MAX_COUNT，则"memory_utilization"必选。 不支持和CPU利用率阈值同时为0，如果选择只限制CPU、内存中的其中一个，则另一个必须传值0。 **取值范围** **：** 整数，取值范围\[0,100）。 **默认取值** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| databases          | 否    | String           | **参数解释** **：** 实例的数据库列表，每个数据库以英文逗号形式隔开。 **约束限制** **：** 如果"limit_type"为SQL_TYPE，则"databases"必选。 **取值范围** **：** 不涉及。 **默认取值** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| node_infos         | 否    | Array of objects | **参数解释** **：** CN节点信息列表，详情参见[表4]。 **约束限制** **：** 如果"limit_type"为SQL_ID，则"node_infos"必选。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   
 表4CreateLimitTaskNodeOption 
| 参数      | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| node_id | 是    | String | **参数解释：** 节点ID。 **约束限制** **：** 必须是当前实例的某一个节点ID。 **取值范围** **：** 不涉及。 **默认取值** **：** 不涉及。                                                 |
| sql_id  | 是    | String | **参数解释** **：** 该节点执行的SQL语句ID。 **约束限制** **：** 如果"limit_type"为SQL_ID，必须与"limit_type_value"值一致。 **取值范围** **：** 不涉及。 **默认取值** **：** 不涉及。 |
   
#### 响应参数
表5响应Body参数 
| 参数                 | 参数类型                                                                     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| task_id            | String                                                                   | **参数解释** **：** 限流任务ID。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| task_scope         | String                                                                   | **参数解释** **：** 任务限流范围。 **取值范围** **：** 目前支持SQL，SESSION两种级别范围。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| limit_type         | String                                                                   | **参数解释** **：** 任务限流类型。 **取值范围** **：** - SQL_ID：模板的SQL_ID。  - SQL_TYPE：SQL类型。  - SESSION_ACTIVE_MAX_COUNT：利用率阈值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| limit_type_value   | String                                                                   | **参数解释** **：** 任务限流类型值。 **取值范围** **：** - 当"limit_type"为SQL_ID类型时，该值为选中模板的sql_id。  - 当"limit_type"为SQL_TYPE类型时，值为SQL类型，为select，update，insert，delete，merge的一种。  - 当"limit_type"为SESSION_ACTIVE_MAX_COUNT类型时，该值为CPU_OR_MEMORY。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| databases          | String                                                                   | **参数解释** **：** 实例的数据库列表，每个数据库以英文逗号形式隔开。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| task_name          | String                                                                   | **参数解释** **：** 限流任务名。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| sql_model          | String                                                                   | **参数解释** **：** SQL模板，仅当任务类型为SQL_ID时，返回该值。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| key_words          | String                                                                   | **参数解释** **：** 关键词，仅当任务类型为SQL_TYPE时，返回该值。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| status             | String                                                                   | **参数解释** **：** 限流任务状态。 **取值范围** **：** - CREATING：表示正在创建。  - UPDATING：表示正在更新数据。  - DELETING：表示正在删除数据。  - WAIT_EXECUTE：表示操作处于等待执行状态。  - EXECUTING：表示操作正在执行中。  - TIME_OVER：表示操作超时。  - DELETED：表示对象已被删除。  - CREATE_FAILED：表示创建操作失败。  - UPDATE_FAILED：表示更新操作失败。  - DELETE_FAILED：表示删除操作失败。  - EXCEPTION：表示操作过程中发生了异常或错误。  - NODE_SHUT_DOWN：表示节点已关闭。   |
| instance_id        | String                                                                   | **参数解释** **：** 实例ID。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| rule_name          | String                                                                   | **参数解释** **：** 规则名。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| parallel_size      | Integer                                                                  | **参数解释** **：** 并发数。 **取值范围** **：** \[0, 2147483647\]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| cpu_utilization    | Integer                                                                  | **参数解释** **：** CPU利用率阈值，仅当任务类型为SESSION_ACTIVE_MAX_COUNT时，返回该值且只保留整数部分。 **取值范围** **：** \[0,100）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| memory_utilization | Integer                                                                  | **参数解释** **：** 内存利用率阈值，仅当任务类型为SESSION_ACTIVE_MAX_COUNT时，返回该值且只保留整数部分。 **取值范围** **：** \[0,100）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| start_time         | String                                                                   | **参数解释** **：** 限流任务开始时间，格式为yyyy-mm-ddThh:mm:ssZ。当"task_scope"为SQL时会返回该参数。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| end_time           | String                                                                   | **参数解释** **：** 限流任务结束时间，格式为yyyy-mm-ddThh:mm:ssZ。当"task_scope"为SQL时会返回该参数。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| created            | String                                                                   | **参数解释** **：** 创建时间，格式为yyyy-mm-ddThh:mm:ss+0000。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| updated            | String                                                                   | **参数解释** **：** 更新时间，格式为yyyy-mm-ddThh:mm:ss+0000。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| creator            | String                                                                   | **参数解释** **：** 创建者。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| modifier           | String                                                                   | **参数解释** **：** 更新者。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| node_infos         | Array of [表6] objects | **参数解释** **：** CN节点信息列表，如果类型为SQLID，返回该值且与请求参数相同。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| job_id             | String                                                                   | **参数解释** **：** 工作流ID。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
 表6CreateLimitTaskNodeResult 
| 参数      | 参数类型   | 描述                                                                                                                                                                                           |
|:---|:---|:---|
| node_id | String | **参数解释** **：** 节点ID。 **取值范围** **：** 不涉及。           |
| sql_id  | String | **参数解释** **：** 该节点执行的SQL语句ID。 **取值范围** **：** 不涉及。 |
   
#### 请求示例
- 创建限流范围是SQL级别，限流类型是SQL_ID的限流任务。
  ```
  https://gaussdb-opengauss.cn-north-1.myhuaweicloud.com/v3/0611f1bd8b00d5d32f17c017f15b599f/instances/3d39c18788b54a919bab633874c159dfin14/limit-task
  {
     "task_scope" : "SQL",
     "start_time" : "2023-06-06T01:47:20+0800",
     "end_time" : "2023-06-07T01:47:20+0800",
     "limit_type" : "SQL_ID",
     "limit_type_value" : "39b6a1a",
     "task_name" : "test1",
     "sql_model" : "select * from a where b = ?",
     "parallel_size" : 100,
     "node_infos" : [ {
        "node_id" : "46d996fdda594f58b17fe509061e0893no14",
       "sql_id" : "39b6a1a"
     } ]
  }
  ```
  
- 创建限流范围是SQL级别，限流类型是SQL_TYPE的限流任务。
  ```
  https://gaussdb-opengauss.cn-north-1.myhuaweicloud.com/v3/0611f1bd8b00d5d32f17c017f15b599f/instances/3d39c18788b54a919bab633874c159dfin14/limit-task
  {
     "task_scope" : "SQL",
     "start_time" : "2023-06-06T01:47:20+0800",
     "end_time" : "2023-06-07T01:47:20+0800",
     "limit_type" : "SQL_TYPE",
     "limit_type_value" : "select",
     "task_name" : "test1",
     "key_words" : "table1,id",
     "parallel_size" : 100,
     "databases" : "test1"
  }
  ```
  
- 创建限流范围是SESSION级别，限流类型是SESSION_ACTIVE_MAX_COUNT的限流任务。
  ```
  https://gaussdb-opengauss.cn-north-1.myhuaweicloud.com/v3/0611f1bd8b00d5d32f17c017f15b599f/instances/3d39c18788b54a919bab633874c159dfin14/limit-task
  {
     "task_name" : "test",
     "task_scope" : "SESSION",
     "limit_type" : "SESSION_ACTIVE_MAX_COUNT",
     "limit_type_value" : "CPU_OR_MEMORY",
     "cpu_utilization" : 80,
     "memory_utilization" : 80,
     "parallel_size" : 100
  }
  ```
  
 
#### 响应示例
```
{
   "task_id" : "59b6a1a278844ac48119d86512e0000",
   "task_scope" : "SQL",
   "task_name" : "test1",
   "limit_type" : "SQL_TYPE",
   "limit_type_value" : "select",
   "instance_id" : "cb651ac71c5a447685ef981e44a0422fin14",
   "key_words" : "test",
   "databases" : "test1",
   "status" : "creating",
   "parallel_size" : 100,
   "rule_name" : "dsa48119d86512e0000bin066a1a27",
   "start_time" : "2023-12-30T02:00:00Z",
   "end_time" : "2023-12-30T02:00:00Z",
   "created" : "2023-12-30T02:00:00Z",
   "updated" : "2023-12-30T02:00:00Z",
   "creator" : "dbs_rds_guangzhou_l00417929_01",
   "job_id" : "d8819ac11297598d06e591b5786aab86"
}
```
#### 状态码
- 正常 200
  
- 异常 请参见[状态码](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_194.html)。
  
 
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_195.html)。
