数据库自治服务DAS提供SQL限流功能。您可以通过SQL限流来控制数据库请求访问量和SQL并发量,保障服务的可用性。本文以RDS MySQL为例介绍如何使用SQL限流功能。
前提条件
支持的数据库引擎为:
- RDS MySQL 5.6、5.7、 8.0
- PolarDB MySQL 5.6、5.7、 8.0
应用场景
场景 |
说明 |
某类SQL并发急剧上升 |
例如缓存穿透或异常调用,可能会导致SQL并发量突然上升。 |
有数据倾斜SQL |
例如大促时拉取某个特别大的数据,导致整体系统繁忙。 |
未创建索引SQL |
例如SQL调用量特别大,并且没有创建索引,导致整体系统繁忙。 |
操作步骤
- 进入实例会话页面,具体操作请参见实例会话。
- 在实例会话页面,单击SQL限流。

- 在SQL限流(过滤)对话框,单击页面右上角创建。

- 在创建SQL限流规则对话框中,填入相应信息,单击创建。
配置 |
说明 |
SQL类型 |
选择SQL类型,取值如下:SELECT、UPDATE、DELETE。
|
最大并发度 |
SQL最大并发数,当包含关键词的SQL达到最大并发数时会触发限流策略。最大并发度允许设置的最小值为1。 |
限流时间 |
SQL限流的生效时间。SQL限流是应急措施,建议您按实际需求设置限流时长,用完及时关闭。 |
SQL关键词 |
需要限流的SQL关键词。若您设置多个关键词,则SQL语句中需要同时包含这些关键词才会触发限流规则,多个关键词间用波浪线(~)分隔。不支持只设置SELECT、UPDATE、DELETE为限流关键词,且关键词大小写敏感(部分早期版本实例不区分)。关键词设置举例:如原始语句SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time
> '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673 ,则对应该语句的限流关键词为
SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id |
说明 目标SQL规则创建后,当应用端使用了同时包含所有关键词的SQL,RDS MySQL 5.6、RDS MySQL 5.7、PolarDB MySQL 5.6、PolarDB
MySQL 5.7的实例会返回1317错误(query execution was interrupted),RDS MySQL 8.0和PolarDB MySQL
8.0不会返回错误,但相关SQL会处于Concurrency control waitting状态。
- SQL限流规则创建完成后,您可以在SQL限流列表查看SQL规则的状态。

说明 如果您需要提前关闭或修改限流规则,可单击目标规则右侧操作栏的关闭或修改按钮。
在文档使用中是否遇到以下问题
更多建议
匿名提交