Updated on 2025-05-19 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.

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.