
# 修改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=UpdateLimitTask)中调试该接口。
#### URI
PUT /v3/{project_id}/instances/{instance_id}/limit-task/{task_id}
表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个字符。 **默认取值** **：** 不涉及。 |
| task_id     | 是    | **参数解释：** 限流任务ID。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   
#### 请求参数
表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参数 
| 参数                 | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| 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。 **取值范围** **：** 大于任务开始时间。 **默认取值** **：** 不涉及。                                                                                  |
| key_words          | 否    | String  | **参数解释：** 关键词。 **约束限制** **：** 当"limit_type"为SQL_TYPE时，必传。 **取值范围** **：** 多个关键词以逗号隔开，数量范围为\[2，100\]个，每个关键词长度范围\[2，64\]位，关键词不允许包含 " 或 \\ 或 {} 或 null值以及非首尾的空格符。 **默认取值** **：** 不涉及。                                                                                                                |
| task_name          | 否    | String  | **参数解释** **：** 限流任务名称。 **约束限制** **：** 不涉及。 **取值范围** **：** 只能为英文字母大小写，下划线，数字和$符，最大长度为100个字符。 **默认取值** **：** 不涉及。                                                                                                                                                                                |
| 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"必选。 **取值范围** **：** 不涉及。 **默认取值** **：** 不涉及。                                                                                                                                                               |
   
#### 响应参数
表4响应Body参数 
| 参数                 | 参数类型    | 描述                                                                                                                                                                                                                                                           |
|:---|:---|:---|
| task_id            | String  | **参数解释：** 限流任务ID。 **取值范围：** 不涉及。                                                       |
| databases          | String  | **参数解释：** 实例的数据库列表，每个数据库以英文逗号形式隔开。 **取值范围：** 不涉及。                                |
| task_name          | String  | **参数解释：** 限流任务名。 **取值范围：** 不涉及。                                                      |
| key_words          | String  | **参数解释：** 关键词，仅当任务类型为SQL_TYPE时，返回该值。 **取值范围：** 不涉及。                                |
| 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时会返回该参数。 **取值范围：** 不涉及。 |
| rule_name          | String  | **参数解释：** 规则名。 **取值范围：** 不涉及。                                                      |
| job_id             | String  | **参数解释：** 工作流ID。 **取值范围：** 不涉及。                                                      |
   
#### 请求示例
- 修改限流类型是SQL_ID的限流任务。
  ```
  https://gaussdb-opengauss.cn-north-1.myhuaweicloud.com/v3/0611f1bd8b00d5d32f17c017f15b599f/instances/3d39c18788b54a919bab633874c159dfin14/limit-task/96854ba7-8d50-4a3c-8fd8-210a7390e9d1
  {
    "start_time" : "2024-08-20T06:54:42+0800",
    "end_time" : "2024-08-20T07:54:42+0800",
    "task_name" : "SOLIdLimit",
    "parallel_size" : 10
  }
  ```
  
- 修改限流类型是SQL_TYPE的限流任务。
  ```
  https://gaussdb-opengauss.cn-north-1.myhuaweicloud.com/v3/0611f1bd8b00d5d32f17c017f15b599f/instances/3d39c18788b54a919bab633874c159dfin14/limit-task/96854ba7-8d50-4a3c-8fd8-210a7390e9d1
  {
    "start_time" : "2024-08-20T06:54:42+0800",
    "end_time" : "2024-08-20T07:54:42+0800",
    "key_words" : "version,type",
    "task_name" : "KeywordLimit",
    "parallel_size" : 10,
    "databases" : "gaussdb_test3"
  }
  ```
  
- 修改限流类型是SESSION_ACTIVE_MAX_COUNT的限流任务。
  ```
  https://gaussdb-opengauss.cn-north-1.myhuaweicloud.com/v3/0611f1bd8b00d5d32f17c017f15b599f/instances/3d39c18788b54a919bab633874c159dfin14/limit-task/96854ba7-8d50-4a3c-8fd8-210a7390e9d1
  {
    "task_name": "ThresholdLimit",
    "parallel_size": 10,
    "cpu_utilization": 20,
    "memory_utilization": 20
  }
  ```
  
 
#### 响应示例
- 修改限流类型是SQL_ID的限流任务。
  ```
  {
      "task_id": "bca08a79-8557-42c2-ab73-09a14d178c57",
      "task_name": "SOLIdLimit",
      "parallel_size": 10,
      "start_time": "2024-08-19T22:54:42Z",
      "end_time": "2024-08-19T23:54:42Z",
      "job_id": "d44bbbc3-4465-4079-ac71-d8e7ab0643a4"
  }
  ```
  
- 修改限流类型是SQL_TYPE的限流任务。
  ```
  {
      "task_id": "ef8575c7-0133-43b4-8ab2-b950b9a6daaf",
      "databases": "gaussdb_test3",
      "task_name": "KeywordLimit",
      "key_words": "type,version",
      "parallel_size": 10,
      "start_time": "2024-08-19T22:54:42Z",
      "end_time": "2024-08-19T23:54:42Z",
      "job_id": "40e2e10f-6f4c-4883-9db7-5422f42187cc"
  }
  ```
  
- 修改限流类型是SESSION_ACTIVE_MAX_COUNT的限流任务。
  ```
  {
      "task_id": "37b6232c-58ea-4d62-a5b5-54fc215c2115",
      "task_name": "ThresholdLimit",
      "parallel_size": 10,
      "cpu_utilization": 20,
      "memory_utilization": 20,
      "job_id": "0ec7109d-bc8f-41f6-9a78-a70f966739fc"
  }
  ```
  
 
#### 状态码
- 正常 200
  
- 异常 请参见[状态码](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_194.html)。
  
 
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_195.html)。
