MYsql监控:全局监控workbench + profiling(sql调优)

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性能分析工具。

你可能感兴趣的:(MYsql监控:全局监控workbench + profiling(sql调优))