前言
为应对突发的数据库请求流量、资源消耗过高的语句访问以及SQL访问模型的变化等问题,PolarDB-X提供了节点级别的SQL限流功能来限制造成上述问题的SQL执行,从而保证实例的持续稳定运行。本文介绍如何使用SQL限流功能。
1、创建限流规则
- 语法
CREATE CCL_RULE [ IF NOT EXISTS ] `ccl_rule_name`
ON `database`.`table`
TO '<usename>'@'<host>'
FOR { UPDATE | SELECT | INSERT | DELETE }
[ filter_options ]
with_options
filter_options:
[ FILTER BY KEYWORD('KEYWORD1', 'KEYWORD2',...) ]
[ FILTER BY TEMPLATE('template_id') ]
with_options:
WITH MAX_CONCURRENCY = value1 [ , WAIT_QUEUE_SIZE = value2 ] [ , WAIT_TIMEOUT = value3 ] [ ,FAST_MATCH = { 0 , 1 }]
限流规则匹配参数 | 是否必选 | 说明 |
---|---|---|
ccl_rule_name | 必选 | 限流规则的名称。 说明 为避免名称与SQL关键字冲突,建议在规则名称前后各加一个反引号(`) |
database. table |
必选 | 数据库和数据表的名称,支持使用星号(*)表示任意匹配。 说明 为避免名称与SQL关键字冲突,建议在库表名称前后各加一个反引号(`)。 |
‘’@‘’ | 必选 | 账号名称。其中Host部分支持用百分号(%)来表示任意匹配。 |
UPDATE SELECT INSERT DELETE |
必选 | SQL语句类型。当前支持UPDATE、SELECT、INSERT和DELETE类型。 说明 每条限流规则仅支持传入一种类型的SQL语句。 |
[ filter_options ] | 可选 | 过滤条件,支持包括如下两种条件: 关键词(KEYWORD):查看限流规则时,关键词列表会在查询结果中被转化为[“kwd1”,“kw2”,“kw3”…]的字符串形式,最多支持512个字符。 说明 若关键字是SQL语句中的参数值,匹配时大小写敏感。 若关键字是SQL语句中的其他词,匹配时大小写不敏感。 模版(TEMPLATE |