前言:
此刻朋友们对“数据库性能问题定位”大致比较注意,咱们都需要知道一些“数据库性能问题定位”的相关知识。那么小编在网上搜集了一些对于“数据库性能问题定位””的相关知识,希望我们能喜欢,小伙伴们快快来学习一下吧!大家好,今天我们一起聊聊,在软件性能测试过程中出现的数据库性能问题如何去定位分析及给出合理的优化方案。
在以往的软件性能测试过程中,出现最多的问题就是表没有建立索引而导致查询数据的出现的慢问题较为多见。
关于索引
索引是对数据库表中一列或多列的值进行排序的一种结构,存储了表中的关键字段,使用索引可快速访问数据库表中的特定信息。
那么我们初步定位是由于SQL导致的性能问题,我们是不是可以对SQL进行监控呢?
一、慢查询
问题现象:sql执行耗时超过设定的阈值
问题原因: 索引未建立或者不合理, 查询量大, 存在锁
我们已经知道有哪些慢SQL了,接下来应该如何对这些SQL进行分析呢?
在/usr/bin目录下,使用mysql自带命令 mysqldumpslow 。这个工具下面提供了一些参数可以去参考
问题建议排查方向:show命令查看慢查询数量具体分析慢查询日志, 找到问题所在的sql
二、慢查询过量的数据库调用
常见的性能瓶颈来自过量的数据库调用,比如SQL查询的Execute()或更新Update(),还有应用程序与数据库的交互,比如ResultSet操作,常见的问题是指定了过于精细的查询条件,然后使用ResultSet.Next()详细搜索数据,导致反复的回调数据库。
三、数据库资源泄露
常出现的资源泄露,可能是因为没有及时close()连接,或者没有成功close()。
四、数据库配置问题
错误的日志文件大小、归档问题、过多的检查点或参数未最佳设置现象,都会导致性能问题。
数据库连接池不合理也会导致性能问题,连接池过小会导致连接池满后,新的客户无法连接上系统,在日志中出现错误信息。但连接池过大,也会造成资源无效损耗,出现新的性能问题。
五、数据库瓶颈解决方案
在大流量时,数据库会成为系统瓶颈,其总体的解决方案如下:
1、项目架构使用缓存,90%请求拦截上游服务器 ———— 读操作
2、数据归档处理 (把一些用户不访问的数据直接归档处理,缓解数据库压力)--使用master ,slave架构
3、停机扩容
影响数据库性能因数:
1、服务器硬件
2、操作系统
3、存储引擎
4、数据库表结构(冗余设计)
5、SQL 语句
6、磁盘 IO
7、网卡流量
8、慢查询
六、总结数据库性能会出现的问题
1、低效 SQL 语句
2、并发 cpu 的问题(SQL 并不支持多核心 cpu 并发模式执行,一个 SQL 语句只能在一个 cpu 进行执行)
3、连接数:max-connections
4、大表(数据多,字段多)
5、大事务
6、超高 cpu 使用率
其中大表、大事务、低效SQL都是属于项目设计和开发时需要注意的,而连接数是需要进行提前设置配置好的。
标签: #数据库性能问题定位