前言

Mysql慢查询现象、原因、排查思路

1、MySQL慢查询表现

1)TPS很低

2)相应时间很长

请添加图片描述

3)应用服务器CPU使用率很低

请添加图片描述

4)MySQL数据库服务器使用率很高

请添加图片描述

2、MySQL慢查询原因

1)数据未加索引

在这里插入图片描述

2)数据库索引未生效

3)SQL语句不够优化

3、Mysql慢查询问题排查思路

1)检查是否添加索引

2)找到接口中所有的sql语句和where语句

3)找到执行比较慢的sql语句

4)对慢查询sql语句执行计划分析

SQL语句优化

1)在where及order by后的字段,添加索引。避免全表扫描。一般不要超4个

2)避免索引失效:

避免where字句中对字段进行null值判断;
避免where字句中对字段进行函数或者表达式的操作;
避免where字句中对字段进行左右模糊查询;

3)查询语句避免*,减少内存使用

4)用union或者union all 替代or

5)适当添加冗余字段,减少联表查询

6)建表的时候,使用数字类型的字段。比如type,status

7)尽量减少子查询,使用关联查询(left join,right join,inner join)替代

性能瓶颈定位思路

整体思路:从前到后,从表象到内部

1)首先排查压力机自身的问题,如CPU、内存、网络、脚本

2)监控中间件的访问日志,观察相应时间耗时,出现在哪一个环节。Tomcat、nginx、apache、mysql

3)排查网络问题,监控压力机到后端服务器的网络是否出现瓶颈

4)监控服务端的所有机器(Tomcat、nginx、apache、mysql)的操作负载,CPU、内存、网络、磁盘是否达到瓶颈

5)监控应用服务器日志,查看是否存在ERROR、timeout、等报错

6)监控中间件连接数是否达到上线,比如tomcat、nginx、mysql连接数是否达到上线

7)监控应用程序的线程状态,使用jstack、jvisualvm查看是否有死锁、阻塞等情况

8)监控应用程序的jvm,使用jstat、jamp查看gc情况,是否存在内存泄漏

9)监控耗时比较长的代码方法,使用jprofiler监控应用程序

10)监控数据库,是否存在慢查询,一般数据库CPU高都是因为sql语句效率低

11)监控数据库的执行计划,是否有全表扫描,预计索引不生效的情况

12)检查系统外部依情况,如果外部依赖系统性能差,也会造成本系统性能低

13)对于不好定位的问题,可以考虑采用模块隔离法来确定问题

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

再小的努力,也能成就伟大的梦想;再大的困难,也挡不住奋斗的步伐。勇往直前,追逐你的目标,因为只有奋斗,才能让生命绽放出最灿烂的光芒!

每一次尝试和坚持都离成功更近一步,不必在意别人的眼光,因为每个人都有自己不同的节奏。勇敢向前迈进,相信自己,你一定能够成就自己的梦想!

不要抱怨生活的不公和挫折,因为正是这些困难才让你更加坚强。保持一颗勇敢和乐观的心,砥砺前行,迎接未来的挑战和机遇,最终成就真正的自己!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐