Updated on 2026-01-20 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

    Dependencies

    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

Definition

Project ID of a tenant in a region

To obtain this value, see Obtaining a Project ID.

Constraints

N/A

Range

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

Default Value

N/A

instance_id

Yes

String

Definition

Unique ID of an instance

Constraints

N/A

Range

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

Definition

Database type

Constraints

N/A

Range

  • MySQL

Default Value

N/A

sql_limit_rules

Yes

Array of CreateSqlLimitRuleOption objects

Definition

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

Constraints

N/A

Range

N/A

Default Value

N/A

database_name

No

String

Definition

Database name

Constraints

Only MySQL databases are supported.

Range

N/A

Default Value

N/A

Table 3 CreateSqlLimitRuleOption

Parameter

Mandatory

Type

Description

sql_type

Yes

String

Definition

SQL type

Constraints

N/A

Range

  • SELECT
  • UPDATE
  • DELETE

Default Value

N/A

max_concurrency

Yes

Integer

Definition

Maximum concurrent SQL statements

Constraints

N/A

Range

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

Default Value

N/A

pattern

Yes

String

Definition

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.

Range

N/A

Default Value

N/A

max_waiting

No

Integer

Definition

Maximum waiting time

Constraints

N/A

Range

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

Default Value

N/A

his_sql_limit_switch

No

Boolean

Definition

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.

Range

  • true
  • false

Default Value

N/A

Response Parameters

Status code: 200

None

Example Requests

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 Codes

Status Code

Description

200

Successful response

400

Client error

500

Client error

Error Codes

See Error Codes.