25.1、mysqlreport介绍:

mysqlreport以很友好的方式显示 MySQL状态变。事实上,它几乎报告了所有的状态。不像 SHOW STATUS 只是在显示

了100多个状态值,mysqlreport 则以人性化的方式阐释和格式化了这些状态值,大大增加了其可读性。

25.2、安装mysqlreport:

MySQLReport 是用perl语言编写,所以想要运行它首先需要安装perl环境;

它还要与MySQL数据库连接,所以还需要安装数据库接口DBI和数据库驱动DBD-MySQL 。

[root@backup ~]# yum install -y perl

[root@backup ~]#yum -y install perl-DBI #安装数据库接口DBI;

[root@backup ~]#yum -y install perl-DBD-MySQL #安装数据库驱动DBD-MySQL;

[root@backup ~]#yum -y install mysqlreport #安装mysqlreport;

[root@backup ~]#rpm -qa mysqlreport perl-DBD-MySQL perl-DBI perl

mysqlreport-3.5-4.el6.noarch

perl-DBI-1.609-4.el6.x86_64

perl-DBD-MySQL-4.013-3.el6.x86_64

perl-5.10.1-144.el6.x86_64

25.3、mysqlreport常用命令说明:

[root@backup ~]#mysqlreport --help

--user #连接MySQL的用户名;

--password #连接MySQL用户的密码;

--host #连接MySQL远程服务器的ip地址;

--port #连接MySQL的端口号;

--socket #连接MySQL的socket;

--no-mycnf #不读取〜/ .my.cnf;

--infile FILE #从文件中读取而不是从MySQL(show status)读取状态值;

--outfile FILE #在屏幕上输出报告后将报告写入FILE;

--email ADDRESS #在屏幕上输出完成后将结果发送到指定的电子邮件地址(在Windows上不起作用);

--flush-status #显示完报告后执行flush-status命令,如果没有权限,则 DBD::mysql 会显示返回值;

--help #打印帮助;

--debug #打印调试信息;

有关更多信息,请访问http://hackmysql.com/mysqlreport。

25.4、输出结果说明:

[root@backup tmp]#mysqlreport --user root --password 123456 --socket /data/3306/mysql.sock

Use of uninitialized value $is in multiplication (*) at /usr/bin/mysqlreport line 829.

Use of uninitialized value in formline at /usr/bin/mysqlreport line 1227.

Use of uninitialized value in formline at /usr/bin/mysqlreport line 1235.

# 数据库版本 # 数据库启动的时间(这里是40分钟)

MySQL 5.5.32 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

25、mysqlreport(my.cnf)调优工具的更多相关文章

  1. 【十一】jvm 性能调优工具之 jmap

    jvm 性能调优工具之 jmap 概述 命令jmap是一个多功能的命令.它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息.查看 ClassLoader 的信息以及 fi ...

  2. Perf -- Linux下的系统性能调优工具,第 1 部分【转】

    转自:https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/ Perf 简介 Perf 是用来进行软件性能分析的工具. 通过它,应用程序可以利用 ...

  3. Perf -- Linux下的系统性能调优工具,第 1 部分

    Perf 简介 Perf 是用来进行软件性能分析的工具. 通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计.它不但可以分析指定应用程序的性能问题 (per t ...

  4. JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)

    性能分析工具jstatjmapjhatjstack 前提概要:         JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jsta ...

  5. advisor调优工具优化sql(基于sql_id)

    advisor调优工具优化sql(基于sql_id) 问题背景:客户反馈数据库迁移后cpu负载激增,帮忙查看原因 解决思路:1> 查看问题系统发现有大量的latch: cache buffers ...

  6. Oracle第二话之调优工具

    Oracle第二话之调优工具 原创if 0 = -I can 发布于2019-04-09 19:53:12 阅读数 172  收藏 展开 目录 1.告警日志 2.用户进程trace文件 3.动态性能视 ...

  7. Perf Event :Linux下的系统性能调优工具

    Perf Event :Linux下的系统性能调优工具 2011-05-27 10:35 刘 明 IBMDW 字号:T | T Perf Event 是一款随 Linux 内核代码一同发布和维护的性能 ...

  8. jvm 性能调优工具之 jps 命令详解

    JPS名称:jps - Java Virtual Machine Process Status Tool命令用法:jps [options] [hostid] options:命令选项,用来对输出格式 ...

  9. JVM性能调优(4) —— 性能调优工具

    前序文章: JVM性能调优(1) -- JVM内存模型和类加载运行机制 JVM性能调优(2) -- 垃圾回收器和回收策略 JVM性能调优(3) -- 内存分配和垃圾回收调优 一.JDK工具 先来看看有 ...

随机推荐

  1. ltp日志

    grep "fail" -i /var/log/messages |wc -lgrep "fail" -i /var/log/messagesgrep &quo ...

  2. 使用autotools工具用configure、make、make install编译安装linux工程的详细步骤

    使用autotools工具用configure.make.make install编译安装linux工程的详细步骤 转载tmxkwzy 最后发布于2016-11-24 10:20:15 阅读数 324 ...

  3. groovy脚本语言基础1

    一 搭建groovy环境 安装JDK [root@node1 ~]# yum  -y install java-11-openjdk 官网下载groovySDK下载 https://groovy.ap ...

  4. Rust trait

    Rust trait Rust中的trait类似于Java中的接口,定义了一组可以被类型选择实现的"契约"或共享行为,. 特征定义: trait Playable{ fn play ...

  5. 单片机编程时易错总结 20181015 项目:3060-A

    3060-A的调试过程中: 20181015 V1.30 A.遇到问题: RS232与LY3023的通信总是自己停止  主程序依旧执行 此版本进行如下修改: 1.RS232用的串口1关闭DMA传送   ...

  6. 如何正确地使用RecyclerView.ListAdapter

    默认是在一个fragment中实现RecyclerView. private inner class CrimeAdapter() : ListAdapter<Crime, CrimeHolde ...

  7. java IO教程《三》

    缓冲区流讲解(Buffered) 什么是缓冲区? 缓冲流,也叫高效流,是对4个基本的File流的增强,所以也是4个流,按照数据类型分类: 字节缓冲流:BufferedInputStream,Buffe ...

  8. php代码审计之命令执行中windows/linux的差异化问题

    昨天好基友发来了一段代码,还是挺有趣的,记录下: <?php $a = '\''.str_replace("'","\'",$_GET[1]).'\''; ...

  9. Java,用户刷屏检测\相似字符串检测

    背景 近期有几个业务方提出一需求,期望判断一个用户在短期内是否存在刷屏现象,出现后能对其做出限制,并上报. 刷屏定义:取出用户近期20条评论,如果有50%的评论是"相似"的,则认为 ...

  10. 工作流Activiti框架中表单的使用!详细解析内置表单和外置表单的渲染

    Activiti中的表单 Activiti提供了一种方便而且灵活的方式在业务流程中以手工方式添加表单 对表单的支持有2种方式: 通过表单属性对内置表单进行渲染 通过表单属性对外置表单进行渲染 表单属性 ...