更新时间:2025-03-25 GMT+08:00
分享

创建SQL限流规则

功能介绍

添加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中调试该接口。

URI

POST /v3/{project_id}/instances/{instance_id}/sql-limit/rules

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数解释

租户在某一Region下的项目ID。

获取方法请参见获取项目ID

约束限制:

不涉及。

取值范围:

只能由英文字母、数字组成,且长度为32个字符。

默认取值:

不涉及。

instance_id

String

参数解释:

实例ID。标识实例的唯一标识。

约束限制:

不涉及。

取值范围:

只能由英文字母、数字组成,且长度为32个字符。

默认取值:

不涉及。

请求参数

表2 请求Body参数

参数

是否必选

参数类型

描述

datastore_type

String

参数解释:

数据库类型。

约束限制:

不涉及。

取值范围:

  • MySQL

默认取值:

不涉及。

sql_limit_rules

Array of CreateSqlLimitRuleOption objects

参数解释:

需要创建的SQL限流规则列表,一次最多创建5个。

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

不涉及。

database_name

String

参数解释:

数据库名称。

约束限制:

仅支持MySQL实例的数据库。

取值范围:

不涉及。

默认取值:

不涉及。

表3 CreateSqlLimitRuleOption

参数

是否必选

参数类型

描述

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.

错误码

请参见错误码

相关文档