MySQLReport
简介:
MySQLReport
一、安装
shell > yum -y install mysqlreport perl-DBD-MySQL
二、使用
shell > mysqlreport --user xxxx --password xxxx --socket /tmp/mysql.sock --flush-status --outfile 20180208.report MySQL 5.5.52-log uptime 17 15:43:7 Wed Feb 7 11:25:42 2018 # MySQL 版本,运行时间 ( 分析时,MySQL 最好已经运行一段时间,否则数据不准确 ) __ Key _________________________________________________________________ Buffer used 2.44G of 3.00G %Used: 81.30 # Buffer 曾经最大使用内存量、率 Current 3.00G %Usage: 100.00 # 当前使用量、率,可以看到 Key_buffer_size 设太小了 Write hit 66.70% # ? Read hit 99.90% # ? # MyISAM 存储引擎 Share (Key、Index) Buffer 相关参数。重要 !!! # Buffer used 使用率是不会超过 95% 的,官方文档说 Share Key Buffer 会将一部分内存给内部数据结构使用, # 所以当 Buffer used 使用率达到 95% 时,实际已经达到 100% 了。 __ Questions ___________________________________________________________ Total 1.14G 744.6/s # MySQL 总共响应过多少查询,响应频率(QPS) DMS 1.01G 659.7/s %Total: 88.59 # Data Manipulation Statements 数据处理语句总数、QPS、占所有查询百分比。 -Unknown 698.58M 458.0/s 61.50 Com_ 647.54M 424.5/s 57.01 COM_QUIT 180.60M 118.4/s 15.90 Slow 2 s 344.25k 0.2/s 0.03 %DMS: 0.03 Log: ON # 慢查询次数,%DMS 0.03 代表慢查询在DMS语句中的百分比,不要大于 0.05 DMS 1.01G 659.7/s 88.59 # 这下面是各分类统计情况,如果开启查询缓存还会有 QC Hits 这个类别 SELECT 774.87M 508.0/s 68.22 77.00 # 最后一个字段是子类别对分类的百分比 UPDATE 184.24M 120.8/s 16.22 18.31 INSERT 40.54M 26.6/s 3.57 4.03 REPLACE 3.91M 2.6/s 0.34 0.39 DELETE 2.73M 1.8/s 0.24 0.27 Com_ 647.54M 424.5/s 57.01 begin 231.41M 151.7/s 20.37 commit 231.41M 151.7/s 20.37 set_option 175.92M 115.3/s 15.49 # 查看 MySQL 到底在做什么。重要 !!! # 会有五个分类:DMS (Data Manipulation Statements)、QC Hits、COM_QUIT、all other Com_commands、Unknown # 顺序是按第一个字段值排序的,如果 DMS、QC Hits 最靠前且百分比很高,说名是个很好的现象。 __ SELECT and Sort _____________________________________________________ Scan 32.45M 21.3/s %SELECT: 4.19 # SELECT 语句造成的全变扫描 Range 29.97M 19.6/s 3.87 # 范围扫描 Full join 11.69k 0.0/s 0.00 # 表连接 Range check 0 0/s 0.00 Full rng join 0 0/s 0.00 Sort scan 55.50M 36.4/s # 全表扫描排序 Sort range 137.91M 90.4/s # 范围扫描排序 Sort mrg pass 0 0/s # 从在这里可以看出一些性能上的问题,全表扫描、表连接、排序等。 # 这些都要特定分析,例如扫描: 如果表只有几十行跟有几百万行产生的影响肯定不一样。 __ Table Locks _________________________________________________________ Waited 43.15M 28.3/s %Total: 3.82 # 等待表锁的次数、百分比,大于 10% 则表示索引设计不良或慢查询太多 Immediate 1.09G 712.4/s # 不需要等待,可以立即获得锁的次数 # 表锁相关,Waited 越低越好。 __ Tables ______________________________________________________________ Open 1024 of 1024 %Cache: 100.00 # 目前表打开的数量、最大打开数、table_open_cache 使用率 Opened 4.03M 2.6/s # 表平均打开次数,该值越大说明 table_open_cache 太小,需要调大 # 表缓存,如果 %Cache 为 100,那么可以尝试调大 table_open_cache (table_cache) 该值 __ Connections _________________________________________________________ Max used 3001 of 3000 %Max: 100.03 # 当前连接数,最大连接数,百分比 Total 180.64M 118.4/s # MySQL Server 数据处理是很快的,最大连接数其实不是越大越好 # 根本原因可能是慢查询、不合适的索引、DNS 解析等导致数据库处理速度下降,从而拉高最大连接数 __ Created Temp ________________________________________________________ Disk table 8.51M 5.6/s # 使用磁盘存放临时表的数量、百分比 Table 74.84M 49.1/s Size: 128.0M # 当使用磁盘存放临时表时,可以适当调高 tmp_table_size File 7 0.0/s # 临时表,使用临时表本来就是个不好的事情,而使用磁盘存储更差,所以 Disk table 应该足够小。 # 增加临时表内存大小、优化 SQL,减少临时表发生 __ Threads _____________________________________________________________ Running 4 of 9 # 运行中的线程数,最大线程数 Cached 6 of 8 %Hit: 92.24 # 线程缓存数,最大线程缓存数,线程缓存命中率 Created 14.02M 9.2/s # 创建的线程数,每秒,越小越好,说明缓存命中 Slow 0 0/s # 线程缓存,MySQL 启动时会创建几个线程,然后让连接复用,%Hit 越大越好,否则调整 thread_cache_size __ Aborted _____________________________________________________________ Clients 71.49k 0.0/s Connects 4.30M 2.8/s # 中断 __ Bytes _______________________________________________________________ Sent 404.50G 265.2k/s Received 207.22G 135.9k/s # 流量 __ InnoDB Buffer Pool __________________________________________________ Usage 1021.81 of 1.00G %Used: 99.79 # 缓冲命中率,越大越好 Read hit 100.00% Pages Free 140 %Total: 0.21 Data 60.55k 92.40 %Drty: 0.06 Misc 4842 7.39 Latched 0.00 Reads 164.05G 107.5k/s # 读 From file 503.62k 0.3/s 0.00 Ahead Rnd 0 0/s Ahead Sql 0/s Writes 112.11M 73.5/s # 写 Flushes 9.26M 6.1/s # 刷新 Wait Free 0 0/s # 等待 # InnoDB 缓冲池,如果是一个 InnoDB 存储引擎的数据库,该值越大越好 __ InnoDB Lock _________________________________________________________ Waits 0 0/s Current 0 Time acquiring Total 0 ms Average 0 ms Max 0 ms # InnoDB 锁,零更好 __ InnoDB Data, Pages, Rows ____________________________________________ Data Reads 535.37k 0.4/s Writes 16.00M 10.5/s fsync 8.78M 5.8/s Pending Reads 0 Writes 0 fsync 0 Pages Created 165.06k 0.1/s Read 922.49k 0.6/s Written 9.26M 6.1/s Rows Deleted 2.32M 1.5/s Inserted 7.41M 4.9/s Read 70.18G 46.0k/s Updated 1.04M 0.7/s