全部产品
云市场

MySQL SQL 限流

更新时间:2019-08-22 22:20:38

为什么要有SQL限流

限流这个词一般用户都不陌生,控制请求访问量和并发,防止把系统拖垮,一般成熟的应用系统都会考虑到限流措施,来最大限度的保障服务的可用性。

数据库限流场景

数据库作为大部分应用的核心依赖,如何防止数据库不被大压力打挂,通常是在应用端去做优化和控制, 但是有些场景我们不得不在数据库端做控制。

  • 某类SQL并发急剧上升,影响正常业
    • 比如缓存穿透,或者异常调用,可能会造成原来并发不大的SQL语句,并发量突然上升
  • 有数据倾斜SQL,影响正常业务
    • 比如大促时拉取某个特别大的数据,造成整体系统繁忙
  • 未创建索引SQL,影响正常业务
    • 比如新上线SQL调用量特别大,又没有创建索引,造成整体系统繁忙

针对以上的场景,我们通常是通过不停的KILL会话,或者联系应用来屏蔽对应的查询,但后者的处理时间过长,等沟通完成,实例已经无法提供服务太久。平时运维过程中会发现, 这些SQL通常具有类似的特性,例如相同的SQL模式,相同的买卖家ID。那是否有办法根据SQL样本的关键字自动拒绝请求呢?接下来介绍HDM(CloudDBA)的升级版SQL限流功能(也成SQL过滤,防火墙,SQL限制,下文统称SQL限流)

使用方式

风险告知

该SQL被限制后,应用端会收到1317错误query execution was interrupted

路径

目前HDM(新版CloudDBA)支持 RDS MySQL 5.6, 5.7, 8.0(即将发布)三个版本,您可以在 实例会话 页面看到SQL限流的按钮, 按钮上的数字如果不为0,表示当前存在SQL限流规则运行中。

入口

首次使用, 需要激活管理账号, 您可以在后续用完后,关闭授权。激活

创建, 可以指定最大并发度,注意:如果最大并发度为0,表示禁止包含该关键词所有请求,HDM为每条限流规则设置了超时时间,超时的规则会被及时关闭, 避免用户漏掉创建

查看列表列表