# 获取SQL限流推荐规则 - ObtainingRecommendedSQLThrottlingRules
#### 功能介绍
根据实时会话获取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=ListSqlRecommendRules)中调试该接口。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_189.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                                        | 访问级别 | 资源类型（\*为必须） | 条件键 | 别名 | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | gaussdb:instance:listSqlLimitRecommendRules | read    | instance     | -     | -    | -        |
     
  
 
#### URI
POST /v3/{project_id}/instances/{instance_id}/limit-task/recommend-rule
表1参数说明 
| 参数        | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释：** 租户在某一Region下的项目ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_196.html)。 **约束限制：** 不涉及。 **取值范围：** 只能由英文字母、数字组成，且长度为32个字符。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| instance_id  | 是    | String   | **参数解释：** 实例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参数 
| 参数           | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| recommend_type   | 否      | String     | **参数解释** **：** SQL限流规则推荐类型。 **约束限制** **：** 不涉及。 **取值范围** **：** - all：全部。  - exec_count：执行次数。  - avg_exec_time：平均执行时间。  - max_exec_time：最长执行时间。   **默认取值** **：** all。 |
| recommend_count  | 否     | Integer  | **参数解释** **：** SQL限流规则推荐数量。 **约束限制** **：** 不涉及。 **取值范围** **：** 1-2147483647。 **默认取值** **：** 5。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| use_ops_tunnel | 否    | Boolean | **参数解释** **：** 紧急通道开关。SQL限流任务在高负载、线程池满等情况下，管控通过常规通道下发运维命令可能失败或超时，通过紧急通道可以在特殊场景下保证运维命令的正常执行。 **约束限制** **：** 不涉及。 **取值范围** **：** - true：表示开始。  - false：表示关闭。   **默认取值** **：** false。                                                                                                                                                                                                                                                                                   |
   
#### 响应参数
表4响应Body参数 
| 参数            | 参数类型          | 描述                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| total_count      | Integer         | **参数解释** **：** 限流规则总条数。 **取值范围** **：** 不涉及。 |
| recommend_rules | Array of objects | **参数解释** **：** 推荐规则列表。详情参见[表5]。                                                                                        |
   
 表5RecommendRules 
| 参数          | 参数类型  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|
| recommend_type | String    | **参数解释** **：** SQL限流规则推荐类型。 **取值范围** **：** - exec_count：执行次数。  - avg_exec_time：平均执行时间。  - max_exec_time：最长执行时间。                                                                                                                                                                                                                                                                                                                           |
| sql_id       | String  | **参数解释** **：** SQL限流规则的SQL ID。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| sql_model     | String    | **参数解释** **：** SQL限流规则的SQL 模板。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| sql_keyword  | String | **参数解释** **：** SQL限流规则的SQL关键字。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| sql_type      | String   | **参数解释** **：** SQL限流规则的SQL类型。 **取值范围** **：** - SELECT：查询。  - INSERT：插入。  - DELETE：删除。  - UPDATE：更新。  - MERGE：合并。   |
| database       | String   | **参数解释** **：** SQL限流规则所属的数据库。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| avg_exec_time  | Double  | **参数解释** **：** SQL限流规则的平均执行时间（单位：秒）。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| max_exec_time  | Double   | **参数解释** **：** SQL限流规则的最长执行时间（单位：秒）。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| exec_count      | Integer  | **参数解释** **：** SQL限流规则的执行次数。 **取值范围** **：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   
#### 请求示例
```
https://gaussdb-opengauss.cn-north-1.myhuaweicloud.com/v3/0611f1bd8b00d5d32f17c017f15b599f/instances/3d39c18788b54a919bab633874c159dfin14/limit-task/recommend-rule
{
  "recommend_type": "all",   
   "recommend_count": 1,   
   "use_ops_tunnel": false
}
```
#### 响应示例
```
{
    "recommend_rules": [
        {
            "recommend_type": "exec_count",
            "sql_id": "3811675404",
            "sql_model": "insert into t1 select generate_series($1,$2),md5(random()::text), md5(random()::text);",
            "sql_keyword": "t1,generate_series,md5,random,text",
            "sql_type": "INSERT",
            "database": "test",
            "avg_exec_time": 2232.495,
            "max_exec_time": 2232.495,
            "exec_count": 1
        },
        {
            "recommend_type": "avg_exec_time",
            "sql_id": "3811675404",
            "sql_model": "insert into t1 select generate_series($1,$2),md5(random()::text), md5(random()::text);",
            "sql_keyword": "t1,generate_series,md5,random,text",
            "sql_type": "INSERT",
            "database": "test",
            "avg_exec_time": 2232.495,
            "max_exec_time": 2232.495,
            "exec_count": 1
        },
        {
            "recommend_type": "max_exec_time",
            "sql_id": "3811675404",
            "sql_model": "insert into t1 select generate_series($1,$2),md5(random()::text), md5(random()::text);",
            "sql_keyword": "t1,generate_series,md5,random,text",
            "sql_type": "INSERT",
            "database": "test",
            "avg_exec_time": 2232.495,
            "max_exec_time": 2232.495,
            "exec_count": 1
        }
    ],
    "total_count": 3
}
```
#### 状态码
- 正常 200
  
- 异常 请参见[状态码](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_194.html)。
  
 
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_195.html)。
