1 前言

CloudDBA是阿里云数据库团队开发的智能诊断和优化平台,可以帮助用户更好使用阿里云数据库。
CloudDBA不断提升算法和规则,更好的匹配更多用户场景,刚刚上线了SQL过滤功能,用来解决某类SQL给系统带来的冲击。

2 功能描述

匹配用户设置的关键字和并发数,对某类SQL(SELECT/UPDATE/DELETE)进行按并发数限流,当这一类SQL的并发小于并发数的进到Server层,大于并发数的丢弃。
该功能只能用来救急,不适合长时间运行。

3 对业务的影响

3.1 收益

限制了问题SQL后,保障DB Server端能正常响应正常业务的语句,保障大部分的业务正常运转

3.2 弊端

如果设置了SQL防火墙,该SQL被限制后,应用端会收到1317错误,即

query execution was interrupted

4 适用场景

如果业务方能够接受舍小(小部分业务损失)保大(大部分业务正常运转),可以进行限流;
如果不能接受上述报错,就要接受整个业务被拖垮的可能。

4.1 能解决的场景

4.1.1 某类SQL并发急剧上升,影响正常业务

比如缓存穿透,或者异常调用,可能会造成原来并发不大的SQL语句,并发量突然上升

4.1.2 有数据倾斜SQL,影响正常业务

比如大促时拉取某个特别大的数据,造成整体系统繁忙

4.1.3 未创建索引SQL,影响正常业务

比如新上线SQL调用量特别大,又没有创建索引,造成整体系统繁忙

4.2 处理误区

4.2.1 切换主备

以前碰到上述情况,见有的运维人员是切换主备尝试解决上述问题,主备的配置是一样的,如果主库有问题,同样的请求到备库也是同样的问题,所以切换是解决不了问题的。

4.2.2 kill问题语句

kill语句是可以减少系统压力,未尝不是一种处理手段。但是,请求是不断进来的,不停kill语句手都酸了吧?

4.3 可以尝试的解决方法

上面提到这个功能只是应急手段那么如何才能解决该类问题呢?

  • 提高缓存命中率
  • 使用只读实例
  • 快速加索引

5 使用方式

5.1 路径

RDS控制台->找到具体实例->CloudDBA->问题诊断->SQL过滤

5.2 找到要限制的SQL语句

通过"问题诊断"里面,观察到某类SQL执行特别慢,并发又特别多时,这条语句可能就是问题SQL,经过再三确认(根据经验,跟业务开发,跟老板)后就可以限制并发啦。
例如:

想限制下面这类语句:

SELECT * FROM sbtest4 WHERE top_cmt_id=99738 AND status in (1,3)  and parent_cmt_id >= 0 order by add_time desc limit 0,20

就要执行下面的步骤

5.3 创建过滤规则

5.3.1 SQL类型

是限制SELECT语句还是限制UPDATE语句还是限制DELETE语句,安全起见默认支持SELECT语句,建议您也优先设置SELECT语句

5.3.2 最大并发度

该次限制的SQL最大允许在Server端跑多少个

5.3.3 限流时间

允许SQL过滤最大执行时间;超过了指定时间,就会自动终止该限制

5.3.4 SQL关键词

SQL过滤的匹配关键词,多个关键词之间以~分隔,不要有空格之类的特殊字符
接着上面的例子,SQL关键词我可以这样拼写

SELECT~FROM~sbtest4~WHERE~top_cmt_id~status~parent_cmt_id~order~add_time~desc

5.4 重置/终止过滤规则

当遇到设置规则错误,或者想提前终止SQL过滤,可以执行该操作。

5.5 查看过滤历史记录

凡是对该实例执行过SQL过滤功能的,都可以在这里查到记录,方便排查问题。

6 注意事项

  • 该功能只能用来救急,不适合长时间运行
  • 安全起见默认支持SELECT语句,建议您也优先限制SELECT语句
  • 该功能只能运行在MySQL 5.6版本
  • 该功能是内核层面上的改进,无论是使用高安全链路还是普通链路都可以使用
  • 可以设置多个SQL过滤(根据不同的关键词)
  • 如果同一类型的SQL关键词设置了多次,限制的并发按这几个并发的和限制
  • 要限制的SQL语句匹配越严格越精准,对业务影响最小

如果设置的不够精准,例如SQL关键词是

SELECT~FROM~sbtest4

那匹配上述规则的SQL语句,哪怕是正常业务的,也可能被限制掉了

  • 被限制后的SQL在应用端会出现
1317 query execution was interrupted
  • 该限制只对被设置的实例生效,不影响主账号下面的其他实例
  • 该限制规则只对新链接有效,如果想使用该规则,在设置过规则后,需要把老链接手动kill(在CloudDBA里可做)

如果您在使用CloudDBA过程中有什么问题,或者好建议,欢迎进群

CloudDBA新功能上线--SQL过滤/限制/防火墙相关推荐

  1. “指标预警”新功能上线,智能实现数据监测

    双十一大促通宵订单数十万,分区服务器宕机大量用户付款失败: 周会 leader 需要数据报表,每周耗费大量时间做图写报告,耗时耗力: 电影看到高潮,calendar 提醒自己到了发日总结的时间,无奈打 ...

  2. 报告!优维科技EasyOps®️全栈运维平台又一大波新功能上线

    报告!优维EasyOps®️全栈运维平台又迎来了一大波新功能上线: 涉及HyperInsight超融合监控.CMDB.ITSM.自动化运维.DevOps · 持续集成.公共服务.UI 8.0 & ...

  3. 盛世昊通董车长APP新功能上线,看视频获收益

    近日,盛世昊通董车长APP新功能上线,新版本中首次加入视频广告"任务中心",看视频广告就能获取收益,通过该功能,用户只要在董车长APP中邀请好友一起看视频做任务即可获取高额视频豆. ...

  4. 滴滴服务分计算机制,滴滴服务分改版!新功能上线!司机:太好了

    原标题:滴滴服务分改版!新功能上线!司机:太好了 日前,滴滴快车服务分全新改版上线 升级后,乘客在完单后三天内(含完单当天) 没有进行投诉或差评的订单 都会按照"默认好评"订单加0 ...

  5. 博客新功能上线,可导出PDF……【2021.12.14】

    hello,大家好,这里是「CSDN产品周报」第21期.本次更新主要涉及首页榜单.博客.问答,具体细节请往下看. 一.CSDN榜单优化 1.排行榜导航栏从右侧移动到左侧 2.新增「原力月榜」,选取全站 ...

  6. 新功能上线:JCJC错别字检测支持自定义词汇啦!

    新功能上线:JCJC错别字检测支持自定义词汇啦! 从2016年10月上线以来,JCJC错别字检测一直努力提高错别字检测的效果和方便更多行业用户使用. 今天,2019年6月15日,我们上线了:自定义词汇 ...

  7. 火车票自动抢票新功能上线了!堪比抢票神器

    端午节假日越来越近了,小编已开始频频收到好友们的助力抢票请求了. 假日出行回家已经迫不及待却抢不到火车票,各种加速软件层出不穷缺又抢不到十分尴尬,甚至还要花费一笔额外的加速费用-- 不过现在不用担心了 ...

  8. android拍照自动裁剪_新功能上线!智能人像抠图、图片自由裁剪,PPT 还能这么玩?...

    众所周知,不少人买平板都是买前「生产力」,买后某奇艺.其实,要打破这个魔咒,一个 WPS 可能就够了. 安卓平板 WPS 不仅能拥有电脑版般的体验,还针对触屏推出了众多实用且前沿的新功能,帮助你快速提 ...

  9. “触达率图”新功能上线,量化网页浏览深度

    运营人员和产品人员工作的核心,是将自己的产品/内容有效展示给精准受众,并获得认可. 拥有数据分析的同学一定知道,此处应当通过关注部分数据指标监测效果.如关注 PV.UV 等监测页面流量是否增加,使用网 ...

最新文章

  1. 【Python】解析Python中类的使用
  2. python快乐编程—基础入门-从萌新到大神必读书籍 《Python快乐编程基础入门》...
  3. hdu1561 树形dp
  4. CSS DIV Shadow
  5. js 操作 select option
  6. 网络信号管理大师怎么用_常说的OKR管理法,到底怎么用?
  7. Flutter 饼状图、柱状图、拆线图、Flutter动态饼图、Flutter图表 flutter_echart 开发文档
  8. 手摸手Go 深入剖析sync.Pool
  9. 视达配色教程2 好的配色的第一条件是什么
  10. 开机自检BIOS语言详解
  11. class type
  12. 模型机CPU设计——ALU函数发生器(6)
  13. java公众号图片上传_调用微信公众号接口上传图片素材
  14. 【转】Photoshop 用户名.组织或序列号丢失或无效.应用程序无法继续.
  15. js中的引号使用不正确导致js方法传入参数类型错误
  16. Android xml 画上半圆 矩形,Android 半圆矩形的实现
  17. 你的深度思考能力,是如何一步步被毁掉的?
  18. wpf初学者-wpf控件简单介绍
  19. 文学-诗经,乌托邦,巨人传,作家,居士类
  20. Nebula 来了,支付宝 App 跨平台动态化框架

热门文章

  1. java $1参数_jmap命令详解----查看JVM内存使用详情
  2. mysql数据库重做日志文件_mysql数据库重做日志
  3. python转义引号的作用_python传到前端的数据,双引号被转义的问题
  4. centos的mysql怎么删用户_linux/centos给Mysql创建用户、授权、查看、删除、修改密码、撤...
  5. 有十五个数按由大到小顺序存放在一个数组中_数据结构基础 (代码效率优化, 线性表, 栈, 队列, 数组,字符串,树和二叉树,哈希表)...
  6. python流量实时统计_Python实现获取nginx服务器ip及流量统计信息功能示例
  7. ffmpeg 音乐循环_[宜配屋]听图阁
  8. 计算机消失了一个磁盘,win7系统重装后莫名奇妙消失一个分区磁盘的解决方法...
  9. android如何阻塞主线程,Android-Android如何避免阻塞主线程
  10. ie8不兼容java项目_常见IE8兼容性问题及解决