MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选( 三 )


MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选

文章插图
  • 2、查看数据库中表的状态:SHOW STATUS LIKE  '%table%',如图所示 。需要特别注意的是Table_locks_waited  指的是不能立即获取表级锁而需要等待的次数,如果等待的次数非常大则说明可能存在锁争抢的情况,如果是频繁的出现锁争抢则对应用程序的并发性能影响很大 。

MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选

文章插图
  • 3、查看数据库中锁的信息:SHOW STATUS LIKE '%lock%',如图所示 。

MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选

文章插图
  • 4、查看数据库中的表被扫描的情况:show global status like 'handler_read%',如图所示,查询的结果数据也可以用来评估数据库中索引的使用情况 。查询的结果数据说明如表所示 。

MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选

文章插图
查询结果项
描述
Handler_read_first
从索引中读取第一项的次数,如果该值非常高,表明服务器正在执行大量的全索引扫描,该值一般不宜太高
Handler_read_key
基于键读取数据行的请求数,该值如果越高则表明大量的查询都走了索引 。如果越低,表示索引的利用很低,该值一般越高越好
Handler_read_last
读取索引中最后一个键的请求数
Handler_read_next
按键顺序读取下一行的请求数,如果查询都走了索引,那么该值将不断递增
Handler_read_prev
按键顺序读取前一行的请求数(倒序读取数据),一般用于评估执行ORDER BY … DESC的次数
Handler_read_rnd
基于固定位置读取数据行的请求数,如果正在执行大量的需要对查询结果进行排序的查询,则此值很高 。如果该值很高,则可能存在很多查询需要做整表扫描或者查询时一些表的关联连接没有正确使用主键或者索引
Handler_read_rnd_deleted
从数据库数据文件中读取被删除记录行的请求数
Handler_read_rnd_next
从数据库数据文件中读取下一行的请求数,如果SQL语句执行大量表扫描,则此值很高 。如果该值很高,一般说明表没有正确添加索引或者SQL语句没有走索引来查询
1.4、性能测试时MySQL中其他常用监控 
  • 1、查看每秒事务的提交数:show global status like 'com_commit',如图所示

MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选

文章插图
  • 2、查看每秒事务的回滚数:show global status like 'com_rollback',如图所示

MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选

文章插图
  • 3、查看线程的运行情况:show global status like 'threads_%',如图所示 。

MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选

文章插图
查询结果描述说明如表所示 。
表查询结果描述说明
查询结果项
描述
Threads_cached
线程缓存中的线程数
Threads_connected
已经建立连接的线程数
Threads_created
已经创建的线程数
Threads_running
正在运行中的线程数
  • 4、查看数据库建立过的连接总数(包括连接中以及已经断开的连接):show global status like 'Connections',如图所示 。

MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选

文章插图
  • 5、查看innodb引擎缓存命中情况:show global status like 'innodb_buffer_pool_read%',如图所示 。

MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选

经验总结扩展阅读