MySQLReport结果详解

来源:互联网 发布:支付宝与淘宝的关系 编辑:程序博客网 时间:2024/06/04 18:25
以下是参考了网上的资料,对MySQLReport结果的解释:

# 数据库版本             # 数据库启动的时间(这里是40分钟)
MySQL 5.6.22             uptime 0 0:40:3        Wed Feb  4 06:52:23 2015

# MyISAM 索引信息,本质来讲,索引最好是都在内存中
__ Key _________________________________________________________________
# 在my.cnf文件中的key_buffer_size定义索引缓存的大小, 缺省是8M, 可考虑设置为512M
Buffer used         0 of   8.00M  %Used:   0.00
# 当Usage到达80或90%,就表示负荷过大,要考虑加大缓存的大小
  Current       1.46M            %Usage:  18.24
# 写命中。写索引的效率(即写入内存与写入硬盘的比例)
Write hit       0.00%
# 读命中。这个非常重要,表示索引信息读内存的命中率,越高越好
Read hit        0.00%

__ Questions ___________________________________________________________
# MySQL自启动以来一共处理了多少个请求,这里是8540个请求,平均每秒是3.6个
Total           8.54k     3.6/s
  Com_         10.60k     4.4/s  %Total: 124.20
  -Unknown     10.20k     4.2/s          119.51
  # 数据操作语句
  DMS           8.11k     3.4/s           94.94
  COM_QUIT         32     0.0/s            0.37
# 慢查询日志,查询超过10s是慢查询日志,一般设置为1s
Slow 10 s           0       0/s            0.00  %DMS:   0.00  Log:
# 数据操作语句的详细信息,可以得知读写比等信息
DMS             8.11k     3.4/s           94.94
  # 查询4980次,每秒2.1次
  SELECT        4.98k     2.1/s           58.35         61.46
  # 更新1710次,每秒0.7次
  UPDATE        1.71k     0.7/s           20.05         21.12
  # 插入1310次,每秒0.5次
  INSERT        1.31k     0.5/s           15.37         16.19
  # 删除100次
  DELETE          100     0.0/s            1.17          1.23
  REPLACE           0       0/s            0.00          0.00
# 数据库其它操作,不宜占比太高
Com_           10.60k     4.4/s          124.20
  stmt_execut   8.11k     3.4/s           94.93
  stmt_close    1.05k     0.4/s           12.30
  stmt_prepar   1.05k     0.4/s           12.30

__ SELECT and Sort _____________________________________________________
# 全表扫描,数值越低越好
Scan                9     0.0/s %SELECT:   0.18
# 范围查询
Range              10     0.0/s            0.20
# 联合查询全表扫描
Full join           0       0/s            0.00
Range check         0       0/s            0.00
Full rng join       0       0/s            0.00
Sort scan           0       0/s
Sort range         71     0.0/s
Sort mrg pass       0       0/s

# 查询缓存
__ Query Cache _________________________________________________________
# 缺省为32M
# 如果内存使用接近最大值,则有查询会从缓存中被移走,从而影响下面的Prune值

Memory usage   16.81k of   1.00M  %Used:   1.64
# 内存碎片,值越大,碎片越多。一般不超过20%。与query_cache_min_res_unit相关
Block Fragmnt 100.00%
Hits                0       0/s
Inserts             1     0.0/s
# insert/prune是一个波动性的QC指标。一个稳定运行中的QC,insert进QC的查询数量应该大于prune掉
# 的查询数量。如果是1:1,就表示:
#   1. QC大小不够
#   2. mysql试图缓存一切,结果帮了倒忙~
# 但更多的时候是第二种情况。因为QC设置里开启的默认type1就是要求mysql尽可能的缓存一切东西。
# 另一个稍微好一些的方式是type2 demand ,只有在查询使用 `select sql_cache` 时才缓存查询结果

Insrt:Prune       1:1       0/s
# hit/insert用来反映QC的有效性。理想情况是:mysql插入一批稳定的查询到QC里,然后源源不断的命中这批
# 结果。所以,如果QC的有效性足够,这个比值应该是偏向hit的。如果不幸的偏向了insert,那说明QC其实没
# 起到太大的作用。比如说1:1,一次insert用了一次hit,然后就被替换了,这完全违背了使用QC的初衷。不
# 过还有更糟的,比如0.34:1,一次都没用上,就被prune掉了

Hit:Insert     0.00:1

# 表锁报表,MyISAM是表锁
__ Table Locks _________________________________________________________
# 锁等待,总数不要超过10%,否则对性能有很大的影响
Waited              0       0/s  %Total:   0.00
# 总数
Immediate       8.28k     3.4/s

# 这里有两个值比较重要。一个是表缓存使用率,哪怕高到100%都行。不过要是真高到100%了,可能你的
# ’table_cache’设置已经不够了,赶紧加大吧。
# 第二个是当前打开表的比率,这个也能协助判断’table_cache’设置是否合理。一般这个值应该小于每秒
# 1次。不过一个负载比较高而又运行的还不错的mysql,可能能达到每秒打开7次表,依然保持100%的表缓存

__ Tables ______________________________________________________________
Open              163 of 2000    %Cache:   8.15
Opened            170     0.1/s

# 如果最大连接数曾经接近过100%,请加大’max_connection’设置。不过事实上,默认的100已经足够绝大多数
# 哪怕相当繁忙的mysql使用了,盲目加大这个设置其实不对。一个mysql链接持续1秒钟,100个就是足足100秒
# 。所以如果连接数太高,或者说一直在慢慢涨,问题很可能在别的地方,比如慢查询、糟糕的索引、甚至DNS
# 解析太慢。在修改这个数的事情,还是先去研究一下为什么100个还不够呢

__ Connections _________________________________________________________
# 最大151,并发最大数是30
Max used           30 of  151      %Max:  19.87
Total              34     0.0/s

__ Created Temp ________________________________________________________
# 在磁盘上创建临时文件
Disk table          0       0/s
# 在内存中创建临时文件,mysql一般也避免在磁盘上创建临时表,除非达到了’tmp_table_size’的阀值。这个
# 阀值会显示在内存(Table)那行的Size列后面,即16M

Table              19     0.0/s    Size:  16.0M
File                5     0.0/s

# 这里面有一个需要注意的地方:线程命中率(%Hit)。每个mysql的连接都是一个单独的线程。
# MySQL启动时,只创建不多的几个线程和一个线程缓存,以节省不断创建和销毁线程的开销,哪
# 怕这个开销不怎么明显。当mysql的连接数超过了线程缓存数(由thread_cache_size定义)
# 时,MySQL开始出现线程抖动(‘threadthrash’)。为了接纳新的连接,mysql疯狂的创建新线程,
# 结果自然是线程命中率大幅下滑。

__ Threads _____________________________________________________________
Running             1 of    1
Cached              8 of    9      %Hit:  11.76
Created            30     0.0/s
Slow                0       0/s

__ Aborted _____________________________________________________________
Clients             0       0/s
Connects            0       0/s

__ Bytes _______________________________________________________________
Sent            2.15M   894.0/s
Received      475.84k   198.0/s

# innodb_buffer_pool_size定义了InnoDB存储引擎的表数据和索引数据的最大内存缓冲区大小。
# 和 MyISAM 存储引擎不同, MyISAM 的 key_buffer_size只能缓存索引键,而innodb_buffer_pool_size
# 却可以缓存数据块和索引键。适当的增加这个参数的大小,可以有效的减少InnoDB类型的表的磁盘I/O
# 在一个以 InnoDB 为主的专用数据库服务器上,可以考虑把该参数设置为物理内存大小的 60%-80%

__ InnoDB Buffer Pool __________________________________________________
# 必须避免mysql运行到缓冲池溢出的地步。myisam溢出,只会导致性能下降(索引读写变慢)
# ,而innodb的溢出问题就多了,因为几乎所有东西都依赖缓冲池。所以最好还是配置好自增长缓冲池
# (‘auto-extending buffer pool’)

Usage          70.55M of 127.98M  %Used:  55.12
# 读命中率
Read hit       97.08%
Pages
  # 空闲页,是使用率(%Used)的对立方
  Free          3.68k            %Total:  44.88
  # 数据页,列%Dirty,展示已经被修改过,但还没有被刷新到磁盘存储的数据页的比率
  Data          4.48k                     54.68 %Drty:   0.00
  # 用于管理分配行锁和自适应哈希索引导致的开销使用的页
  Misc             36                      0.44
  # 目前正在读写、或者因为其他原因无法被刷新的页
  Latched                                  0.00

# 从内存读取的数量, 这个数值可以用来衡量innodb缓冲池的吞吐量,
# 因为几乎所有inondb需要的东西都是在缓冲池里,所以缓冲池的读性能是越快越好。
# 哪怕超过每秒200000次也不是不可能的

Reads         118.58k    49.3/s
  # 从磁盘读的数量, 越小越好
  From file     3.47k     1.4/s            2.92
  # 随机读,innodb启动的随机读取数。只有对表的大部分内容进行随机扫描的时候才会出现
  Ahead Rnd         0       0/s
  # 顺序读,只有全表扫描才会出现
  Ahead Sql                 0/s
# 本行显示写的数量以及读写的比率。如果服务器主要操作是update和insert的话,这个值也会比较高。
Writes         11.59k     4.8/s
# 缓冲池的页刷新请求数
Flushes         1.48k     0.6/s
# 一般情况下,innodb缓冲池的写操作是后台运行的。不过,如果出现必须要读写一个页可偏偏没有可用的新
# 页时,(innodb)就只能先等待页的刷新了。这个变量就是这些等待的总数。只要缓冲池的大小设置得当,
# 等待数应该会很小

Wait Free           0       0/s

# innodb锁报表,MyISAM引擎是表锁,而innoDB是行锁。所以当你使用innodb时这几个变量的值非常重要。
__ InnoDB Lock _________________________________________________________
# 等待某行解锁的累积次数,最好为0
Waits             136     0.1/s
# 当前正在等待解锁的行个数,最好为0
Current             0
# 显示了毫秒(ms)级行锁等待数据。分别是总值、平均值和最大值。同样最好是0次。
Time acquiring
  Total        266046 ms
  Average        1956 ms
  Max            6798 ms

# 这部分报告,一般广泛的用于衡量innodb引擎的吞吐量指标。
__ InnoDB Data, Pages, Rows ____________________________________________
Data
  # 指的是整个innodb引擎完成所有的数据读取次数。注意:不是整个数据读取字节数或者类型,
  # 而是innodb完成的数据读取次数

  Reads         3.54k     1.5/s
  # 写,和读一样也是次数的统计
  Writes          977     0.4/s
  # 刷新,同样的,innodb从内存写入磁盘的次数。这个值应该会比前两个小
  fsync           170     0.1/s
  # 等待,又被分成了三行(108-110),分别是读、写、刷新的等待次数
  Pending
    Reads           0
    Writes          0
    fsync           0
# 这部分包括三种自描述类型:创建、读取、写入,分别用来表示缓冲池中页的创建、读取
# 和写入的数量和速率(即每秒操作数)。

Pages
  Created          27     0.0/s
  Read          4.45k     1.9/s
  Written       1.48k     0.6/s

Rows
  Deleted          98     0.0/s
  Inserted      1.31k     0.5/s
  Read        475.31k   197.8/s
  Updated       2.58k     1.1/s
0 0
原创粉丝点击