赞
踩
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年最全的软件测试工程师学习知识架构体系图 |
再小的努力,也能成就伟大的梦想;再大的困难,也挡不住奋斗的步伐。勇往直前,追逐你的目标,因为只有奋斗,才能让生命绽放出最灿烂的光芒!
每一次尝试和坚持都离成功更近一步,不必在意别人的眼光,因为每个人都有自己不同的节奏。勇敢向前迈进,相信自己,你一定能够成就自己的梦想!
不要抱怨生活的不公和挫折,因为正是这些困难才让你更加坚强。保持一颗勇敢和乐观的心,砥砺前行,迎接未来的挑战和机遇,最终成就真正的自己!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。