专栏首页腾讯云数据库专家服务腾讯云数据库 MySQL:SQL 限流
原创

腾讯云数据库 MySQL:SQL 限流

背景

在数据库相关的问题中,经常会遇到并发过高的现象,引发这个现象的原因很多,比如慢查询堆积,业务流量突增等等。通常在面对这一类问题的时候,DBA 会比较被动,常规的手段只有定期批量的 kill 低效查询,直到开发的同学临时调整业务查询或者前端业务限流。

定期批量的 kill 存在较多的问题,例如 kill 的操作不一定能及时杀掉低效查询;定期批量的查询实际上不可能跟得上程序发起查询的速度,本质上数据库仍旧处于 hang 死的状态,业务在持续受损。

针对这一类场景,腾讯云数据库 MySQL 在内核层面实现了一个新的功能:SQL 限流,并封装在 DBbrain中,灵活使用这个功能可以快速有效的应对这一类问题。

功能入口

进入数据库智能管家DBbrain的主控制台,页面如下所示:

DBBrain

进入实时会话页面之后,可以看到有 SQL 限流的这个功能 tab:

实时会话

SQL 限流任务的详细配置界面如下图:

SQL限流

主要几个选项的作用如下:

  • SQL 类型:可以进行限流的 SQL 类型,包括 select,delete,update,insert,replace。
  • 最大并发数:可以正常执行受限 SQL 的连接数
  • 执行方式:一定时长之后自动关闭;或者是一直持续,直到手动关闭。
  • 限流时间:自动关闭前持续的时间,最大为 1440 分钟。
  • SQL 关键字:被限流的 SQL 语句关键字,可以使用表名,或者是 SQL 文本的一部分。

需要注意的是,最大并发数指的是连接数,而不是 QPS,因此这个限制并不能非常有效的控制住整体的 QPS,如果本身 SQL 的执行效率很高,那么即使并发数限制到 1,整体的 QPS 可能也不会降到非常低。

实际效果

为了验证一下实际的效果,本次测试使用腾讯云数据库 MySQL 5.7 的最新版,并使用腾讯云的云服务器部署 sysbench 客户端,使用 read_only 的测试模型来模拟业务访问压力。持续一段时间之后,sysbench 的输出数据如下:

[ 100s ] thds: 24 tps: 616.50 qps: 8633.22 (r/w/o: 8633.22/0.00/0.00) lat (ms,95%): 40.37 err/s: 0.00 reconn/s: 0.00
[ 110s ] thds: 24 tps: 620.00 qps: 8678.82 (r/w/o: 8678.82/0.00/0.00) lat (ms,95%): 39.65 err/s: 0.00 reconn/s: 0.00
[ 120s ] thds: 24 tps: 620.38 qps: 8689.77 (r/w/o: 8689.77/0.00/0.00) lat (ms,95%): 39.65 err/s: 0.00 reconn/s: 0.00
[ 130s ] thds: 24 tps: 620.81 qps: 8686.73 (r/w/o: 8686.73/0.00/0.00) lat (ms,95%): 39.65 err/s: 0.00 reconn/s: 0.00
[ 140s ] thds: 24 tps: 617.70 qps: 8652.90 (r/w/o: 8652.90/0.00/0.00) lat (ms,95%): 40.37 err/s: 0.00 reconn/s: 0.00
[ 150s ] thds: 24 tps: 611.00 qps: 8549.66 (r/w/o: 8549.66/0.00/0.00) lat (ms,95%): 41.85 err/s: 0.00 reconn/s: 0.00
[ 160s ] thds: 24 tps: 614.50 qps: 8604.52 (r/w/o: 8604.52/0.00/0.00) lat (ms,95%): 41.10 err/s: 0.00 reconn/s: 0.00
[ 170s ] thds: 24 tps: 619.29 qps: 8670.92 (r/w/o: 8670.92/0.00/0.00) lat (ms,95%): 39.65 err/s: 0.00 reconn/s: 0.00
[ 180s ] thds: 24 tps: 619.71 qps: 8672.68 (r/w/o: 8672.68/0.00/0.00) lat (ms,95%): 40.37 err/s: 0.00 reconn/s: 0.00

这里针对所有 sbtest 表的查询,设置 1 分钟的限流,且并发数为 1:

设置限流

设置完之后看一下实际的效果:

[ 240s ] thds: 24 tps: 620.71 qps: 8690.32 (r/w/o: 8690.32/0.00/0.00) lat (ms,95%): 39.65 err/s: 0.00 reconn/s: 0.00
[ 250s ] thds: 24 tps: 619.50 qps: 8669.86 (r/w/o: 8669.86/0.00/0.00) lat (ms,95%): 39.65 err/s: 0.00 reconn/s: 0.00
[ 260s ] thds: 24 tps: 620.20 qps: 8683.36 (r/w/o: 8683.36/0.00/0.00) lat (ms,95%): 39.65 err/s: 0.00 reconn/s: 0.00
[ 270s ] thds: 24 tps: 612.60 qps: 8582.43 (r/w/o: 8582.43/0.00/0.00) lat (ms,95%): 41.85 err/s: 0.00 reconn/s: 0.00
[ 280s ] thds: 24 tps: 618.31 qps: 8650.48 (r/w/o: 8650.48/0.00/0.00) lat (ms,95%): 40.37 err/s: 0.00 reconn/s: 0.00
[ 290s ] thds: 24 tps: 619.40 qps: 8671.66 (r/w/o: 8671.66/0.00/0.00) lat (ms,95%): 40.37 err/s: 0.00 reconn/s: 0.00
[ 300s ] thds: 24 tps: 618.59 qps: 8664.02 (r/w/o: 8664.02/0.00/0.00) lat (ms,95%): 40.37 err/s: 0.00 reconn/s: 0.00
[ 310s ] thds: 24 tps: 619.61 qps: 8671.11 (r/w/o: 8671.11/0.00/0.00) lat (ms,95%): 39.65 err/s: 0.00 reconn/s: 0.00
[ 320s ] thds: 24 tps: 264.90 qps: 6586.44 (r/w/o: 6586.44/0.00/0.00) lat (ms,95%): 376.49 err/s: 2246.51 reconn/s: 0.00
[ 330s ] thds: 24 tps: 52.30 qps: 5346.70 (r/w/o: 5346.70/0.00/0.00) lat (ms,95%): 1648.20 err/s: 3503.80 reconn/s: 0.00
[ 340s ] thds: 24 tps: 54.10 qps: 5452.58 (r/w/o: 5452.58/0.00/0.00) lat (ms,95%): 1352.03 err/s: 3456.59 reconn/s: 0.00
[ 350s ] thds: 24 tps: 54.60 qps: 5416.30 (r/w/o: 5416.30/0.00/0.00) lat (ms,95%): 1427.08 err/s: 3521.60 reconn/s: 0.00
[ 360s ] thds: 24 tps: 53.20 qps: 5383.31 (r/w/o: 5383.31/0.00/0.00) lat (ms,95%): 1648.20 err/s: 3565.41 reconn/s: 0.00
[ 370s ] thds: 24 tps: 56.60 qps: 5580.50 (r/w/o: 5580.50/0.00/0.00) lat (ms,95%): 1327.91 err/s: 3376.50 reconn/s: 0.00
[ 380s ] thds: 24 tps: 434.60 qps: 7581.38 (r/w/o: 7581.38/0.00/0.00) lat (ms,95%): 42.61 err/s: 1178.20 reconn/s: 0.00
[ 390s ] thds: 24 tps: 612.80 qps: 8581.10 (r/w/o: 8581.10/0.00/0.00) lat (ms,95%): 41.10 err/s: 0.00 reconn/s: 0.00
[ 400s ] thds: 24 tps: 616.19 qps: 8631.43 (r/w/o: 8631.43/0.00/0.00) lat (ms,95%): 40.37 err/s: 0.00 reconn/s: 0.00
[ 410s ] thds: 24 tps: 620.09 qps: 8680.52 (r/w/o: 8680.52/0.00/0.00) lat (ms,95%): 39.65 err/s: 0.00 reconn/s: 0.00
[ 420s ] thds: 24 tps: 620.40 qps: 8685.16 (r/w/o: 8685.16/0.00/0.00) lat (ms,95%): 39.65 err/s: 0.00 reconn/s: 0.00
[ 430s ] thds: 24 tps: 619.01 qps: 8662.79 (r/w/o: 8662.79/0.00/0.00) lat (ms,95%): 40.37 err/s: 0.00 reconn/s: 0.00
[ 440s ] thds: 24 tps: 619.10 qps: 8667.34 (r/w/o: 8667.34/0.00/0.00) lat (ms,95%): 39.65 err/s: 0.00 reconn/s: 0.00

可以看到在 sysbench 侧,出现大量的 err,QPS 下降了约 35%,且平均延迟的 95 分位出现了巨幅的增长,持续 1 分钟之后就马上恢复正常了。限流结束之后,DBbrain 可以看到实际限制的详情:

限制效果

拓展一下

实际上,稍微研究一下就会发现,这个 SQL 限流的设置页面,可以把并发数设置到 0,例如:

并发为0

那么在实际生效的前后,对比一下差异:

mysql> delete from sbtest.sbtest1 where id = 1;
Query OK, 1 row affected (0.01 sec)

mysql> delete from sbtest.sbtest1 where id = 1;
ERROR 5001 (HY000): SQL rejected by CDB_SQL_FILTER
mysql>

可以看到生效之后,delete 的行为直接被拒绝了,这时候看一下 DBbrain 的限制详情:

限制效果

因此这个功能,在需要限制某些表的某些操作的时候,可以作为 SQL 防火墙来使用,比如像这个例子中一样,限制 sbtest 表上的所有 delete 操作。

总结一下

DBbrain 作为默认免费提供的服务,能极大的提升用户排查腾讯云数据库 MySQL 问题的效率,并及时发现和解决大量的隐患,可以多去了解一下其中的功能。

DBbrain 是什么?

数据库智能管家(TencentDB for DBbrain,DBbrain)是腾讯云推出的一款为用户提供数据库性能优化、安全、管理等功能的数据库自治云服务。

DBbrain 利用机器学习、大数据手段、专家经验引擎快速复制资深数据库管理员的成熟经验,将大量传统人工的数据库运维工作智能化,服务于云上和云下企业,有效保障数据库服务的安全、稳定及高效运行。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 云数据库-腾讯云数据库

    云数据库-腾讯云数据库主要分为:云数据库MySQL,云数据库Redis,云数据库MongoDB以及SQL Server

    用户1361591
  • 腾讯云数据库价格介绍-腾讯云数据库MySQL

    腾讯云数据库为分为三种:1、mysql数据库 2、弹性缓存redis 3、高性能数据库mongodb 这三种类型的数据库。

    风吹的季节
  • 腾讯云云数据库 MySQL

    云数据库 MySQL(TencentDB for MySQL)让用户可以轻松在云端部署、使用 MySQL 数据库。通过云数据库 MySQL,您在几分钟内即可部署...

    勤劳的小蜜蜂
  • 腾讯云数据库是什么?腾讯云数据库怎么用?

    目前国内的网络技术已经相当发达了,各个公司和企业都开始使用云数据库,国内的云数据库有很多,较为出名的有腾讯云数据库,您数据库对于企业来说是一种伟大的发明,因为能...

    用户8715145
  • MongoDB-腾讯云MongoDB数据库

    腾讯云MongoDB数据库,稳定、弹性、安全、高性能的文档型数据库,兼容 DynamoDB 协议,满足您多样的业务需求

    用户3570397
  • 数据库-腾讯云数据库优惠活动

    双节点架构,自动容灾。提供备份回档、监控、快速扩容、数据传输、安全审计、只读实例等运维全套解决方案

    用户1361591
  • Gartner最新报告:腾讯云数据库增速国内第一

    近日,国际权威研究机构Gartner公司发布《The Future of the Database Management System (DBMS) Marke...

    勤劳的小蜜蜂
  • 腾讯云优惠券/腾讯云代金券等最新优惠活动

    腾讯云依托强大的腾讯背景实力,与阿里云有很多的类似,即便从业云服务器产品比较晚,但是正因为有这么强大的背景优势也能获取到足够的市场份额。腾讯云与众多云服务商一样...

  • 腾讯云服务器秒杀价格20元/月起!

    精选秒杀热卖云产品限量抢,产品包括云服务器、MySql云数据库、热门云数据库、。短信云服务器20元/月起,服务稳定,价格更加优惠。秒杀链接:

    用户5907249
  • 首届鹅厂DB吐槽大会,约你来战

    导语 | 使用数据库的过程中,总有那么些问题不吐不快?成本高、灾备不好做、运维耗时耗力、半天找不到故障原因?那这边建议您体验云数据库,打开新的“槽点世界”~ ...

    腾讯云数据库 TencentDB
  • Gartner最新报告:腾讯云数据库增速国内第一

    近日,国际权威研究机构Gartner公司发布《The Future of the Database Management System (DBMS) Marke...

    腾讯云数据库 TencentDB
  • 腾讯云分布式数据库(DCDB)

    DCDB 是部署在腾讯云公有云上的一种兼容MySQL协议和语法,支持自动水平拆分的share nothing架构的分布式数据库。分布式数据库即业务获取是完整的逻...

    苏强
  • 如何登录腾讯云数据库

    本文主要介绍了使用命令行方式登录以及使用云数据库管理界面登录这两种实例登录腾讯云数据库的步骤。

    腾讯云数据库团队
  • 腾讯云数据库产品介绍

    腾讯云上有许多种数据库产品,本文简单介绍每种产品的介绍,特性,应用场景等,帮助各位根据业务需要选择最适合的数据库。

    scarlett学习手册
  • 腾讯云数据库8月月刊

    ? ? ? 特惠体验云数据库  ? ↓↓更多惊喜优惠请点这儿~

    腾讯云数据库 TencentDB
  • 一不小心,就入选Gartner魔力象限了

    就在今天,Gartner发布权威报告《Magic Quadrant for Cloud Database Management Systems》称,凭借在产品...

    腾讯云数据库 TencentDB
  • 免费报名 | 腾讯云自研数据库CynosDB交流会

    All in 云+时代,数据库的高可用性、按需付费、按需扩展等属性解放了大批开发者。腾讯发布的自研数据库CynosDB作为国内首款同时兼容MySQL和PG的云原...

    云加社区技术沙龙
  • 免费报名 | 腾讯云自研数据库CynosDB交流会

    All in 云+时代,数据库的高可用性、按需付费、按需扩展等属性解放了大批开发者。腾讯发布的自研数据库CynosDB作为国内首款同时兼容MySQL和PG的云原...

    腾讯技术工程官方号
  • 免费报名 | 腾讯云自研数据库CynosDB交流会

    All in 云+时代,数据库的高可用性、按需付费、按需扩展等属性解放了大批开发者。腾讯发布的自研数据库CynosDB作为国内首款同时兼容MySQL和PG的云...

    腾讯大讲堂

扫码关注云+社区

领取腾讯云代金券