Mysql有很多监控工具,有免费的workbench、innotop、Monitoring Tool;
workbench比较简单,全局监控 重点关注仪表盘,下面是转的关于仪表盘的一些描述;
下面是关于仪表盘的描述,我就不再重复啰嗦了;转自https://www.jianshu.com/p/bb42f18ae5c3
MySQLworkbench可以在图形化仪表盘中显示服务器性能统计信息。如果想要显示仪表盘,请打开一个数据库服务器,然后从左侧导航中选择管理("management")选项卡。然后单击仪表盘("dashboard")。
仪表盘位置
下图显示了仪表盘中的信息布局
注意 此功能需要MySQL server5.6或者更高版本
仪表盘布局
网络状态(Network Status)
这里突出显示了Mysql服务器通过客户端连接发送和接受的网络流量的统计数据,包括传入网络流量,传出网络流量和客户端连接数量
网络状态
从上到下依次为:
传入网络数量(Incoming Network Traffic)单位字节/秒
传出网络数量(Outgoing Network Traffic)单位字节/秒
客户端连接数量(Client connections)
MySQL状态(MySQL status)
这里突出显示了MySQL服务器主要活动和性能统计信息。数据包括开表缓存命中效率(MySQL是如何打开表的),执行的sql语句,以及SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER和DROP语句的计数(每秒)。
MySQL Status
从上到下依次是
开表缓存命中率(Table Open Cache)。鼠标悬停有更详细信息
sql语句执行量(SQL Statements Executed)
各种主要SQL语句执行数量
InnoDB状态(InnoDB Status)
这里提供了由InnoDb储存引擎生成的InnoDB缓冲池和磁盘活动的概述。数据分为三组
注意
将鼠标悬停在图表上可查看其他信息,例如总计数。
用法
读请求(read reqs):InnoDB对缓冲池执行的逻辑读取请求数(每秒)
写请求(write reqs):InnoDB对缓冲池执行的逻辑写请求数(每秒)
磁盘读取(disk reads):InnoDB无法从缓冲池中进行逻辑读取的次数。这些必须从磁盘中读取
InnoDB缓冲池使用情况(InnoDB Buffer Pool):正在使用的InnoDB缓冲池的百分比。鼠标悬停可以查看附加信息,比如使用率和空闲的页(InnoDB缓冲池)
写
写入的数据(data written):写入InnoDB重做日志文件的写入次数
写入(writes):写入InnoDB重做日志文件的物理写入次数
InnoDB磁盘写入(InnoDB Disk Writes):将鼠标悬停可以查看特定秒内的磁盘写入次数。可查看最后120s
写入(writing):由InnoDB存储引擎使用文件操作写入的数据总量(以字节为单位)。
读
双写缓存次数(Doublewrite Buffer):执行的双重缓存写入次数。
InnoDB磁盘读取(InnoDB Disk Reads):将鼠标悬停可以查看特定秒内的磁盘读取次数。可查看最后120s
读取(reading):由InnoDB存储引擎在文件操作中读取的数据总量(以字节为单位)。
InnoDB Status
作者:Swerve
链接:https://www.jianshu.com/p/bb42f18ae5c3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Mysql-性能分析-Profiling(sql)调优
如果技能水平较低,性能测试工程师至少应该把调优前后的第四步截图做下对比,并报告;
下面是转自https://www.jianshu.com/p/36b35f84ccde的详细描述,我就不具体写了
是什么
Show Profile是mysql提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于Sql调优的测量。
怎么玩
1.先查看是否开启了此功能:show variables like 'profiling%';
默认情况下,参数出于关闭状态,为OFF状态
2.开启Profiling:set profiling=1;
开启此功能后,就能执行我们的SQL语句
3.展示最近的SQL执行情况:show profiles;
此命令展示最近执行的sql语句,默认是15次,一个示例如下:
展示最近的15条
Query_ID会一直递增,后期我们会使用这个id,来具体查询某一条SQL的执行耗时清单
4.具体查看某一条SQL的执行细节:show profile cpu,block io for query 8;
如下图为查询id=8的这条sql的执行细节,此处查询了cpu和block io这两种类型,其他可以选择的类型在图的下面展示:
SQL执行具体细节
可以使用的类型如下:
ALL;显示所有的开销信息
BLOCK IO:显示块IO相关开销
CONTEXT SWITCHES:上下文切换相关开销
CPU:显示CPU相关开销
IPC:显示发送和接受相关开销
MEMORY:显示内存相关开销
PAGE FAULTS:显示页面错误相关开销
SOURCE:显示和Source_function, Source_file,Source_line相关的相关开销
SWAPS:显示交换次数相关开销
应该重点关注什么
请读者继续看前面的图SQL执行具体细节,左边Status列展示了一条SQL执行的从开始到清理的整个生命周期中执行的操作。如果在其生命周期阶段出现如下的情况的就要重视了:
converting HEAP to MyISAM :查询结果太大,内存都不够用了往磁盘上面搬了
Creating tmp table :创建了临时表,先拷贝到临时表,用完后再删除
Copying to tmp table on disk:把内存中的临时表复制到磁盘中,这个很耗性能
locked :这个就是指在等待锁的意思
可以看看如下Creating tmp table的样例
Creating tmp table的样例
总结
开启Profiling后,mysql会留下15条最近执行的sql的现场, 便于我们发现问题。
Show profiles用来查最近的15条。
Show profile用来展示每一个SQL执行阶段的耗时清单,便于我们发现耗时最多的地方,然后以此为依据查找问题所在,最后优化SQL或者优化mysql参数。比如耗时清单创建了临时表,就要考虑表是否创建索引,如果创建了那么是否没有用到或者失效了。
总的来说Profiling是一个很不错的mysql性能分析工具。
网友评论