CREATE CONCURRENT_LIMITING_RULE
描述
该语句用于创建限流规则,指定限流范围来限制特定 SQL 的并发度。
权限要求
执行 CREATE CONCURRENT_LIMITING_RULE 语句,需要当前用户拥有 CREATE 权限。有关 seekdb 权限的详细介绍,参见 seekdb 的权限分类。
语法
CREATE CONCURRENT_LIMITING_RULE [ IF NOT EXISTS ] `ccl_rule_name`
ON `database`.`table`
TO '<usename>'@'ip'
FOR { ALL | UPDATE | SELECT | INSERT | DELETE }
filter_options:
[ FILTER BY KEYWORD('KEYWORD1', 'KEYWORD2',…) ]
with_options:
WITH MAX_CONCURRENCY = value1 [per sql]
参数解释
| 参数 | 描述 |
|---|---|
ccl_rule_name | 必选,表示限流规则的名称。 说明 为避免名称与 SQL 关键字冲突,建议在规则名称前后各加一个反引号(`) |
database.table | 必选,表示数据库和数据表的名称,支持使用星号(*)表示任意匹配。 说明 为避免名称与 SQL 关键字冲突,建议在规则名称前后各加一个反引号(`) |
<usename>@<host> | 必选,表示账号名称。其中,username 支持 * 表示所有用户,Host 部分支持用百分号(%)来表示任意匹配。 |
ALL|UPDATE | SELECT | INSERT| DELETE | 必选,表示 SQL 语句类型。当前支持ALL、UPDATE、SELECT、INSERT 和 DELETE 类型。说明 每条限流规则仅支持传入一种类型的 SQL 语句。 |
[ filter_options ] | 可选,表示限流关键字。 说明
|
with_options | 必选,用于控制限流的并发度, 并且指定限流统计粒度是规则级别的还是 Format SQLID 语句级别的。目前仅支持 MAX_CONCURRENCY 参数,表示匹配到该限流规则的 SQL 语句的最大并发度。 |
示例
执行如下命令进行关键词限流:
CREATE CONCURRENT_LIMITING_RULE IF NOT EXISTS `sql1_keywords_ccl_rule`
ON *.* TO '%'@'%' FOR SELECT
FILTER BY KEYWORD('table1', 'table2', 'c1') WITH MAX_CONCURRENCY 100;