SQL Statement Concurrency Control
Concurrency Control restricts the execution of SQL statements based on specified rules when there are SQL statements that cannot be optimized timely or a resource (for example, vCPU) bottleneck occurs.
Usage Notes
- The kernel version of primary RDS for MySQL instances must be 5.6.50.3, 5.7.31.4, 8.0.25.1, or later.
- The kernel version of RDS for MySQL read replicas must be 5.6.51.6, 5.7.37.1, 8.0.25.1, or later.
- Separate concurrency rules can be added for RDS for MySQL read replicas of the kernel version 5.7.38-221000 or later.
- If a SQL statement matches multiple concurrency control rules, only the latest rule takes effect.
- Keywords in a concurrency control 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.
- If the replication delay is too long, adding or deleting a concurrency control rule for a read replica does not take effect immediately.
- If you replicate data from an instance to a third-party instance based on binlogs, deleting or adding SQL statement concurrency rules from or to the instance will interrupt the replication process.
- Each SQL statement concurrency control rule can contain a maximum of 128 keywords.
- Currently, SQL Statement Concurrency Control supports only keywords SELECT, UPDATE, and DELETE.
- Empty characters before and after each keyword will be ignored, for example, spaces, \n, \r, and \t.
- Too many keywords or rules may affect performance. Retain only required concurrency control rules.
- Up to 100 concurrency control rules can be retained.
- If a SQL statement has been stored in query cache, it is not subject to concurrency control.
- SQL statement concurrency control does not limit concurrency for:
- System tables
- SQL statements used to query data, for example, select sleep(xxx)
- User root in versions including 5.6, 5.7.41.230700 and earlier versions in 5.7, and 8.0.28.230701 and earlier versions in 8.0
- Stored procedures, triggers, and functions
Procedure
- Click
in the upper left corner and select a region and project. - Click
in the upper left corner, and under Databases, click Data Admin Service. - In the navigation pane, choose Intelligent O&M > Instance List.
- In the upper right corner of the Instance List page, search for instances by engine type, instance name, or instance IP.
- Locate the target instance and click Details.
- Choose SQL > SQL Statement Concurrency Control.
- On the displayed page, toggle on Concurrency Control.
- Click View Supported Versions.
- Click Add Concurrency Control Rule. In the displayed dialog box, select a SQL statement type, enter keywords, and specify the maximum number of concurrent SQL statements.
- Keyword: You can enter keywords or copy an existing SQL statement to the text box and click Generate Keyword.
- Keywords generated from an original SQL statement are only for reference.
- Each SQL statement concurrency control rule can contain a maximum of 128 keywords.
The following explains how a rule matches SQL statements based on keywords:
For example, if you enter the keywords select~id~name~from~t3~where~age~>~27 (the keywords are separated by a tilde (~)) for a rule, the system will match them from first to last and restrict the execution of any SQL statement that contains these keywords.
- Max. Concurrency: SQL statements that meet the specified SQL type and keywords and exceed the value of Max. Concurrency will not be executed.
SQL statements that have been executed before a concurrency control rule is added are not counted.
If you add a concurrency control rule and set Max. Concurrency to 0, the concurrency of the following SQL statements will be controlled:
"select id, name from t3 where age > 27" "select id, name, age from t3 where age > 27" "select id, name from t3 where age > 5 and id < 27"
But the concurrency of the following SQL statement will not be controlled:
"select name, age from t3 where age > 27"
- Keyword: You can enter keywords or copy an existing SQL statement to the text box and click Generate Keyword.
- Confirm the settings and click OK.
If a SQL statement concurrency control rule is no longer needed, click Delete in the Operation column.