Concurrency Control
Scenarios
Concurrency Control keeps TaurusDB instances stable regardless of how many SQL statements are concurrently submitted.
Constraints
- This function is only available to TaurusDB instances that meet the following requirements:
- 2.0.28.40 > kernel version ≥ 2.0.28.15
- Kernel version ≥ 2.0.29.1
- Each SQL concurrency control rule can contain up to 128 keywords.
- The keywords in a rule cannot contain \t, \r, and \n, and cannot be a backslash (\) or a single null character ('').
- Spaces at the start, end of or in the middle of a keyword are ignored.
- The SQL concurrency control rule cannot end with a tilde (~).
- 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.
- Each SQL concurrency control rule applies to only the SQL statements that your database received after the rule is created.
- If different rules are created for the primary node and read replicas of a DB instance, the rules still apply to the primary node and read replicas after their roles are switched over.
- If a SQL statement matches multiple concurrency control rules, only the most recently created rule is applied.
- SQL statements that have been executed before a concurrency control rule is added are not counted.
- The total length of all rules for SELECT, UPDATE, or DELETE statements and the Concurrency value in each rule cannot exceed 1024 bytes.
- If you add too many SQL concurrency control rules for your instance, the execution of SELECT, UPDATE, or DELETE statements will slow down.
- SQL concurrency control rules are applied based on prefix match. For example, if the concurrency control rule is SELECT~COUNT~t1, SQL statements SELECT COUNT(*) FROM t1 and SELECT COUNT(*) FROM t1 LIMIT 1 will both be intercepted.
- After concurrency control is triggered, an execution error is reported on the service side, indicating that query execution was interrupted. The error code is ERROR 1317 (70100).
- This function controls how many statements can run at the same time. However, it does not limit concurrency for:
- system catalog
- Queries where no database data is involved, such as select sleep(xxx)
- Account root
- SQL statements in stored procedures, triggers, and functions
Procedure
- Log in to the management console.
- Click
in the upper left corner and select a region and project. - Click
in the upper left corner of the page, choose . - On the Instances page, click the instance name.
- In the navigation pane, choose DBA Assistant > Historical Diagnosis.
- Click SQL Explorer and then Concurrency Control.
- On the displayed page, enable Concurrency Control.
- Click Add Rule. In the displayed dialog box, specify SQL Type, Keyword, and Max. Concurrency.
- Keyword: You can enter keywords or copy an existing SQL statement to the text box and click Generate Keyword.
Keyword: Take select~a as an example. select and a are two keywords contained in a concurrency control rule. The keywords are separated by a tilde (~). In this example, the rule restricts the execution of only the SQL statements containing keywords select and a.
- Max. Concurrency: SQL statements that meet the specified SQL type and keyword and exceed the value of Max. Concurrency will not be executed.
- If you select Kill existing sessions that meet this rule, the sessions that meet the rule will be killed.
- If you select Synchronize rules to other nodes, the new rules can be synchronized to other nodes in the same instance.
- 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 concurrency control rule is not required, select the rule and click Delete above the rule list. In the displayed dialog box, click OK.