Updated on 2025-11-26 GMT+08:00

Creating a SQL Throttling Rule

Function

This API is used to create a SQL throttling rule. Currently, this function is supported only for MySQL databases. The restrictions are as follows:

  • Keywords are separated by a tilde (~), for example, select~a. A throttling rule will be applied to SQL statements containing keywords select and a.
  • If a SQL statement matches multiple rules, only the latest rule is applied.
  • Keywords of a throttling rule are sorted in a specific order, and the system will match them from first to last. For example, if one rule contains the keyword a~and~b, the system only matches xxx a>1 and b>2.
  • Generated keywords may be case-sensitive. Execute show variables like 'rds_sqlfilter_case_sensitive' or go to the console to check parameter settings for specifying case-sensitivity.
  • Throttling rules can only be added for primary instances.
  • System catalogs are not restricted, queries which do not involve data are not restricted, and the root user is not restricted in specific versions.

Authorization Information

Each account has permissions to call all APIs, but IAM users must have the required permissions specifically assigned.

  • If you are using role/policy-based authorization, see the required permissions in Permissions Policies and Supported Actions.
  • If you are using identity policy-based authorization, the following identity policy-based permissions are required.

    Action

    Access Level

    Resource Type (*: Required)

    Condition Key

    Alias

    Dependency

    das:clouddba:createSqlLimitRules

    Write

    Instance

    -

    -

    -

URI

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

Table 1 URI parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Explanation:

Project ID of a tenant in a region

To obtain this value, see Obtaining a Project ID.

Constraints:

N/A

Values:

The value can contain 32 characters. Only letters and digits are allowed.

Default value:

N/A

instance_id

Yes

String

Explanation:

Unique ID of an instance

Constraints:

N/A

Values:

The value can contain 32 characters. Only letters and digits are allowed.

Default value:

N/A

Request Parameters

Table 2 Request body parameters

Parameter

Mandatory

Type

Description

datastore_type

Yes

String

Explanation:

Database type

Constraints:

N/A

Values:

  • MySQL

Default value:

N/A

sql_limit_rules

Yes

Array of CreateSqlLimitRuleOption objects

Explanation:

SQL throttling rules to be created. A maximum of 5 rules can be created at a time.

Constraints:

N/A

Values:

N/A

Default value:

N/A

database_name

No

String

Explanation:

Database name

Constraints:

Only MySQL databases are supported.

Values:

N/A

Default value:

N/A

Table 3 CreateSqlLimitRuleOption

Parameter

Mandatory

Type

Description

sql_type

Yes

String

Explanation:

SQL type

Constraints:

N/A

Values:

  • SELECT
  • UPDATE
  • DELETE

Default value:

N/A

max_concurrency

Yes

Integer

Explanation:

Maximum concurrent SQL statements

Constraints:

N/A

Values:

[0, 2^31-1]. The actual value depends on the query result.

Default value:

N/A

pattern

Yes

String

Explanation:

SQL throttling rule

Constraints:

Keywords are separated by a tilde (~), for example, select~a. The throttling rule will be applied to SQL statements containing keywords select and a.

Values:

N/A

Default value:

N/A

max_waiting

No

Integer

Explanation:

Maximum waiting time

Constraints:

N/A

Values:

[0, 2^31-1]. The actual value depends on the query result.

Default value:

N/A

his_sql_limit_switch

No

Boolean

Explanation:

Whether historical SQL throttling rules are enabled

Constraints:

  • This parameter takes effect only for the current SQL throttling rule.
  • When this parameter is set to ON, existing sessions that match the SQL throttling rule will be killed.

Values:

  • true
  • false

Default value:

N/A

Response Parameters

Status code: 200

None

Example Request

Creating a SQL throttling rule

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"
}

Example Responses

None

Status Code

Status Code

Description

200

Successful request

400

Client error

500

Client error

Error Code

For details, see Error Codes.