mysqlreport工具

mysqlreport工具(二)  (2012-02-27 17:20:03)转载▼


Questions Report: Lines 9 - 26
第二个主要报告区域,Questions。说他第二重要是因为这部分主要说明MySQL都在忙着干什么,还有MySQL在做事时有多忙。“操作”包含SQL语句和MySQL协议通信。最普遍关心的问题是MySQL运行过程中每秒运行多少SQL语句,但是这种考虑问题方法是过于武断地的。这部分报告考虑的更加全面。

Total: Line 10
第一行表示了MySQL回应了所有问题的总数和更新时间内的平均回应率。这一比率通常会让人得出结论“我的MySQL服务器平均每秒钟100次处理数”。但是,真正的问题是,在这100个处理数中,有多少是真正完成的呢?后面几行回答了这一问题。
(这里需要说明的是,“Questions(操作)”是被响应的,而“(Queries查询)”是被执行的。mysqlreport可以分辨出“操作”和查询,特别是在“操作数报告”中。“操作”是每个和各种对MySQL服务器的请求,这包含了SQL查询和MySQL特定的命令和协议通信,查询是仅包含SQL查询:SELECT, UPDATE等)

Distribution of Total Queries (DTQ): Lines 11 - 15
    所有的“操作”可分为5类:数据操作语句(DMS)、查询缓存命中率(QC Hits)、COM_QUIT、其他通信命令和未知。这5个分类是从11至15行动态显示的。mysqlreport按照他们的总次数降序排列。这个子报告能够明显的表示出MySQL在忙着干什么。理想情况下,MySQL应该忙于DMS 或者QC Hits,因为这些行为时真正完成某些事情的。COM_QUIT,Com_和Unknown类别是必要的,但是处于次要地位。
    在进一步解释每一类之前,需要说明的是这部分子报告第三列表明该列值占总“操作”请求数的百分比,“操作”部分的其他子报告也是如此。在例子中,DMS数占总操作数的82.84%是正常示数。

Data manipulation statements(DMS)(Line 11)包括SELECT,INSERT,REPLACE,UPDATE和DELETE。基本上,DMS是MySQL数据库干的最有用的,因此,DMS应该是MySQL做的最多的。DMS子报告会在行17-22之间详细显示。

QC Hits(Line 12)是MySQL查询执行过程中,通过查询缓存补偿,而不是实际执行的操作数。具有一个较高的QC Hits数是令人期待的,因为QC的返回是非常快的。但是,完成有效地QC缓存是非常困难的。这在后面的Query Cache Report中的Insrt:Prune和Hit:Insert部分将深入解释。
在例子中,QC Hits在所有的“问题”中占16.91%,这一指标已是相当不错的。但是,不要被这个误导,“Query Cache Report”描述了更复杂的事情。尽管QC Hits貌似很不错,但是服务器的查询缓存并不像想象中那么好。

COM_QUIT (Line 13)是个可以忽略的无关紧要的参数,它包含到报告中为了保证完整性。具体内容可参考“COM_QUIT and Questions”的描述文章(地址:http://hackmysql.com/com_quit)

Com_ (Line 14)表示MySQL处理的各种命令,通常都是协议相关的。理想情况下,在这个指标应当比较低,因为当比较高时,说明MySQL忙而无用。该分类参数过高,则表示一些怪异的问题,后面在Com_将详细讨论。

Unknown (Line 15)是一个推测的目录。理想情况下,前四部分的总和应该是等于全部“操作”数量,但通常不相等。这是因为存在一些MySQL的操作,增加了操作计数器,但是并没有表现在单独的指标上。
这一行会动态显示为"+Unknown"或者"-Unknown"。"+Unknown"表示存在更多的操作数,比mysqlreport计算的多;"-Unknown"表示mysqlreport计算的数比所有的统计数少。
This category can vary greatly. On some servers it is near the top, but on most it is at the very bottom. It is better for it to be at the very bottom. Eventually, the nature of these unknowns will be discovered and mysqlreport will account for them correctly.

Slow: Line 16
第16行是非常重要的:他指示了MySQL执行的慢查询数目有多少。影响“Slow”指标的系统参数long_query_time,这一参数默认值为10s。很多人认为10s是在数据库时间中时一个恒定值,long_query_time最好设置为1或者毫秒级单位(毫秒设置在MySQL的新版本中支持)
long_query_time,这一参数值只有慢查询之后才会显现出来。在mysqlreport v3.5以后,该参数支持:秒、毫秒、微妙。在某些情况下,该参数由于显示宽度8个字母的限制。例如,long_query_time的参数值'999.999 ms'截断成'999.999 ','10.000100 s'截断成'10.0001 '。
理想情况下,慢查询的统计应该为0,但是通常也会有一些慢查询的存在。一般来说,慢查询的比率(第三列)占整个操作数的0.05或更低。当有很多慢查询(第一列),这是的比率值就会显示出问题。这一行还增加了一列:DMS操作数百分比。对于慢查询,0是最好的,这一列在DMS子报告中更加有用。
最后一列,Log,表示慢查询日志功能开启还是关闭(通过设置log_slow_queries参数)。慢查询日志通常是打开的。

DMS: Lines 17 - 22
DMS子报告,和DTQ子报告一样,第一列是按照降序排列的。该部分从17到22,共6行,表示了前文所提到数据操作数(SELECT、INSERT等)。第一行显示的和DTQ报告中(第11行)的显示一样的。
这一子报告显示MySQL数据库是哪一种类的数据库:是查询负荷高、还是插入负荷高、还是其他的。MySQL服务器都是倾向于查询负荷高(SELECT heavy)。了解是哪种类型的MySQL数据库有利于理解其他的报告值。例如,一个插入负荷高的服务器,其写入率会接近为1.0,这种类型的数据库锁表报告值也会偏高,这类数据合适与采用InnoDB类型表;一个查询负荷高的数据库,就会表现出读取率为1和一个较低的表锁值,这种类型的数据库需要采用查询缓存,适合于采用MyISAM表。
(原文是“ A SELECT heavy server had better have a read ratio of zero and a very low table lock values.”,我觉得是笔误吧)
在这个例子中,服务器是一个查询符合高的数据库。很明显,这个数据库面向查询事务。知道数据库类型就有利于数据库参数的优化。

Com_: Lines 23 - (26)
Com_子报告和其他子报告一样分类排序。这部分子报告的内容不同于服务器到服务器命令,因为每一行指示的Com_指标都是表现的MySQL协议的命令,你可以参考MySQL的帮助文档理解这部分概念(网址为:http://forge.mysql.com/wiki/MySQL_Internals)。大部分的条目名称都是很直观的,比如Com_change_db。
这部分指标当DTQ子报告中的Com_最高时才起作用,此时表明MySQL正忙于“程序事务”而不是SQL查询事务。举个例子,一台服务器的Com_rollback指标很高。rollback发生在事务处理失败的时候。服务器的每一次事务处理都失败,很显然,服务器是有问题的。在没有mysqlreport的情况下,很明显是不可能分辨出服务器的这些问题的。
大部分服务器,Com_子报告显示没有异常,但是时常地检查该部分报告是很有必要的。

猜你喜欢

转载自syzxlyx-cu.iteye.com/blog/1689340