
# 创建SQL限流规则 - CreateSQLThrottleRule
#### 功能介绍
添加SQL限流规则。目前仅支持MySQL数据库。 使用限制如下：
- 规则举例详细说明：例如关键字是"select\~a", 含义为：select以及a为该并发控制所包含的两个关键字，\~为关键字间隔符，即若执行SQL命令包含select与a两个关键字视为命中此条并发控制规则。
- 当SQL语句匹配多条限流规则时，优先生效最新添加的规则，之前的规则不再生效。
- 限流规则关键字有顺序要求，只会按顺序匹配。如：a\~and\~b 只会匹配 xxx a\>1 and b\>2，而不会匹配 xxx b\>2 and a\>1。
- 关键字可能大小写敏感，请执行 "show variables like 'rds_sqlfilter_case_sensitive'或者到实例参数设置页面进行确认。
- 部分版本只读实例不允许设置限流规则，如果要设置限流规则，请到主实例上进行添加。
- 系统表不限制、不涉及数据查询的不限制、root账号在特定版本下不限制。
 
#### 调试
您可以在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=DAS&api=CreateSqlLimitRules)中调试该接口。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-das/das_01_0130.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                              | 访问级别  | 资源类型（\*为必须） | 条件键 | 别名 | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | das:clouddba:createSqlLimitRules | write | instance    | -   | -  | -      |
     
  
 
#### URI
POST /v3/{project_id}/instances/{instance_id}/sql-limit/rules
表1路径参数 
| 参数          | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| project_id  | 是    | String | **参数解释**： 租户在某一Region下的项目ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-das/das_01_0036.html)。 **约束限制：** 不涉及。 **取值范围：** 只能由英文字母、数字组成，且长度为32个字符。 **默认取值：** 不涉及。 |
| instance_id | 是    | String | **参数解释：** 实例ID，实例的唯一标识。可通过查看实例列表或者实例详情获取实例ID信息。 **约束限制：** 不涉及。 **取值范围：** 只能由英文字母、数字组成，且长度为36个字符。 **默认取值：** 不涉及。                                                                                |
   
#### 请求参数
表2请求Body参数 
| 参数              | 是否必选 | 参数类型                                                                                                                     | 描述                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| datastore_type  | 是    | String                                                                                                                   | **参数解释：** 数据库类型。 **约束限制：** 不涉及。 **取值范围：** MySQL **默认取值：** 不涉及。            |
| sql_limit_rules | 是    | Array of [CreateSqlLimitRuleOption] objects | **参数解释：** 需要创建的SQL限流规则列表，一次最多创建5个。 **约束限制：** 不涉及。                                                                                                                                                   |
| database_name   | 否    | String                                                                                                                   | **参数解释：** 数据库名称。 **约束限制：** 仅支持MySQL实例的数据库。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
   
 表3CreateSqlLimitRuleOption 
| 参数                   | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| sql_type             | 是    | String  | **参数解释：** SQL类型。 **约束限制：** 不涉及。 **取值范围：** - SELECT  - UPDATE  - DELETE   **默认取值：** 不涉及。                                                                                        |
| max_concurrency      | 是    | Integer | **参数解释：** 最大并发数。 **约束限制：** 不涉及。 **取值范围：** \[0, 2\^31-1\]，实际取决于查询。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                            |
| pattern              | 是    | String  | **参数解释：** SQL限流规则。 **约束限制：** 限流规则以\~分隔关键字，例如select\~a。规则举例详细说明：例如关键字是"select\~a", 含义为：select以及a为该并发控制所包含的两个关键字，\~为关键字间隔符，即若执行SQL命令包含select与a两个关键字视为命中此条并发控制规则。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                     |
| max_waiting          | 否    | Integer | **参数解释：** 最大等待时间。 **约束限制：** 不涉及。 **取值范围：** \[0, 2\^31-1\]，实际取决于查询。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                |
| his_sql_limit_switch | 否    | Boolean | **参数解释：** 历史SQL限流开关。 **约束限制：** - 本开关仅对本条SQL限流规则生效。  - 开启时，将kill掉命中此条SQL限流规则的已有会话。   **取值范围：** - true  - false   **默认取值：** 不涉及。 |
   
#### 响应参数
**状态码：200**
无。
#### 请求示例
创建SQL限流规则。
```
POST https://das.cn-north-1.myhuaweicloud.com/v3/054c630ff780d4cc2f40c00d7f6fb21d/instances/d871e13ee1044e21a473330cd67047cbin01/sql-limit/rules
{
  "sql_limit_rules" : [ {
    "sql_type" : "SELECT",
    "pattern" : "select~t2~var",
    "max_concurrency" : 100
  }, {
    "sql_type" : "DELETE",
    "pattern" : "delete~t1~name",
    "max_concurrency" : 1
  } ],
  "datastore_type" : "MySQL"
}
```
#### 响应示例
无。
#### 状态码
| 状态码 | 描述            |
|:---|:---|
| 200 | Success.      |
| 400 | Client error. |
| 500 | Client error. |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-das/das_01_0035.html)。
