高楼的性能工程实战课
高楼
盾山科技 CEO,7DGroup 创始人
19172 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 35 讲
特别放送 (1讲)
结课测试 (1讲)
结束语 (1讲)
高楼的性能工程实战课
15
15
1.0x
00:00/00:00
登录|注册

16 | 商品加入购物车:SQL优化和压力工具中的参数分析

你好,我是高楼。
今天这节课,我用商品加入购物车接口,来给你讲一讲 SQL 优化和压力工具中的参数分析。
对于 SQL 的优化,很多人一看到数据库资源使用率高,就猜测是 SQL 有问题。这个方向看起来没错,但是,具体是哪个 SQL 有问题,以及有什么样的问题,往往回答不出来。因此,这节课我会教你怎么根据资源使用率高,快速定位到有问题的 SQL,并做出相应的调整。此外,你还将看到,当压力工具的参数使用不合理时,我们应该如何处理由此产生的数据库锁的问题。
现在,我们就开始这节课的分析。

压力数据

对于商品加入购物车这个接口,我们第一次运行的性能场景结果如下:
看着有一种想哭的感觉,有没有?从这张图来看,问题不止一个。我用自己在有限的职业生涯中吸收的天地之灵气,打开天眼一看,感觉这里有两个问题:
TPS 即使在峰值的时候,也不够高,才 50 左右;
TPS 在峰值的时候,有大量的错误产生。
那哪个问题更重要呢?有人可能说,明显应该处理错误呀,有错误看着不眼晕吗?如果你是有强迫症的人,那没办法,可以先处理错误。
不过,在我看来,先处理 TPS 不高的问题也是可以的。因为虽然有错误产生,但并不是全错呀,只有 5% 的错,你着个啥急。
可是,不管怎么着,我们都要走性能分析决策树的思路。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了SQL优化和压力工具参数分析的方法和技巧。作者首先指出了在数据库资源使用率高时,很多人会猜测是SQL有问题,但具体是哪个SQL有问题,以及有什么样的问题,往往回答不出来。接着,作者介绍了如何根据资源使用率高,快速定位到有问题的SQL,并做出相应的调整。同时,还讨论了当压力工具的参数使用不合理时,应该如何处理由此产生的数据库锁的问题。通过分析商品加入购物车接口的性能场景结果,提出了解决TPS不高和错误产生的问题。作者从拆分响应时间、全局分析和MySQL全局监控等方面展开了具体分析,最终得出了需要重点关注SELECT语句的结论。整体来看,本文通过实际案例分析,深入浅出地介绍了SQL优化和压力工具参数分析的方法和技巧,对于需要进行数据库性能优化的技术人员具有一定的参考价值。文章内容涵盖了从资源使用率高的问题定位到具体SQL优化的方法,以及压力工具参数对数据库锁问题的影响,通过实际案例分析展示了解决TPS不高和错误产生的方法,为读者提供了全面的数据库性能优化思路。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《高楼的性能工程实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • 馒头大王
    根据系统指标现象看问题 一、TPS低/响应耗时长 1、分析链路-推荐skywalking 2、发现service-MySQL耗时较长 3、确定慢SQL 方法1:MySQL Report-pt-query-digest(解析慢日志) 方法2:RDS→日志管理 注:一般伴随着DB CPU高 4、”执行计划“分析慢SQL (执行 explain 或 desc + SQL) 5、添加相关索引 无法通过索引解决的根据业务优化代码 6、问题解决 二、报错/错误率高 1、查日志 2、具体问题具体分析 譬如: 1)参数 2)主键冲突 3)超时 4)服务降级 ~~~~

    作者回复: 总结的不错哦。

    2021-04-27
    9
  • 同心飞翔
    老师,是否可以推荐个有各种性能问题的开源系统,大家来练手。还是要自己实践

    作者回复: 正在写搭建环境的文章,本来想着自己随便找一个都能玩,看到问的人多,所以打算加一篇。

    2021-04-26
    3
    3
  • 姑射仙人
    为什么是Cart - MySQL影响最大,看图上才113ms。User - Gateway,Gateway - Cart平均响应时间也很大呀,这块是怎么回事?

    作者回复: 是的。GW - cart也大,不过那是另一个问题。

    2022-01-20
  • 安静。。。
    2. 你能画出在第二阶段分析中的逻辑吗? 因为错误数量随着请求数量的增加而增加 查看错误的日志,确定代码是在add的时候报错 那么同时请求add的场景,跟实际的场景有关系 实际上可能不会有多个用户同时请求的场景,需要修改压测数据

    作者回复: 用户肯定是会有多个用户的。

    2021-07-12
  • 公瑾
    老师,慢日志阈值一般设置成多少,100ms左右吗?

    作者回复: 看业务的需求指标。

    2021-06-17
  • z-Amy
    老师你好,请问MySQL Report 是什么命令打印出来的?
    2024-02-22归属地:北京
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部