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. Linux服务之Samba服务篇

    Samba服务 桑巴Smb是基于cs架构 作用:用于跨平台进行文件共享 优点:兼容性好,较为安全(具备身份验证) 缺点:仅限内网环境使用 应用:一般在办公环境下使用 rz 也是一种可以在Windows ...

  2. 7.2-5 usermod

    7.2 usermod:修改用户信息 usermod 命令用于修改系统已经存在的用户的账号信息.   -c comment         修改用户password文件中用户的说明栏,同useradd ...

  3. 学完了这篇JVM,面试官真拿我没办法了!

    在我们面试中经常会遇到面试官问一些有关JVM的问题,下面我大概从运行时数据域.类加载机制.类加载器.垃圾收集器.垃圾收集算法.JVM堆内存模型.JVM内存结构.JVM调优等几个方面来讲一下JVM. 一 ...

  4. vue 安装sass5.0版本遇到的问题

    cnpm install node-sass@4.9.2 --save-dev cnpm install sass-loader@7.3.1 --save-dev cnpm install style ...

  5. Redis持久化锦囊在手,再也不会担心数据丢失了

    大家好,我是小羽. Redis 的读写都是在内存中进行的,所以它的性能高.而当我们的服务器断开或者重启的时候,数据就会消失,那么我们该怎么解决这个问题呢? 其实 Redis 已经为我们提供了一种持久化 ...

  6. ubuntu16.04服务自启动(弹控制台)

    一.设置root桌面用户登录 1.vim  /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 在最后一行添加greeter-show-manual-lo ...

  7. xss-代码角度理解与绕过filter

    0x00 原理   xss全称为cross site scripting,中文为跨站脚本攻击.它允许web用户将恶意代码植入到提供给用户使用的页面.代码包括HTML代码和客户端脚本. 0x01 危害 ...

  8. 深度学习数据特征提取:ICCV2019论文解析

    深度学习数据特征提取:ICCV2019论文解析 Goal-Driven Sequential Data Abstraction 论文链接: http://openaccess.thecvf.com/c ...

  9. 智能物联网(AIoT,2020年)(中)

    智能物联网(AIoT,2020年)(中) 05 中国AIoT产业图谱 06 中国AIoT商业模式 标准程度越低人力和时间成本投入越多,2B2C模式附加值高 07 中国AIoT玩家分布简介 四类玩家,优 ...

  10. centos 7查看系统网络情况netstat

    查看系统网络情况 netstat ➢ 基本语法 netstat [选项] ➢ 选项说明 -an 按一定顺序排列输出 -p 显示哪个进程在调用 应用案例 请查看服务名为 sshd 的服务的信息. ➢ N ...