十大MySQL性能分析工具汇总!

十大MySQL性能分析工具汇总!十大MySQL性能分析工具汇总!

大家好,又见面了,我是你们的朋友全栈君。

前言:

MySQL 数据库最常见的两个瓶颈是CPU和I/O的瓶颈。CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候,磁盘I/O瓶颈发生在装入数据远大于内存容量的时候。

MySQL数据库性能遇到瓶颈,如何快速定位问题的原因,是每个DBA或系统运维人员应该思考的问题。正确的借助一些性能分析工具,能够帮助DBA或系统运维人员进行问题快速的定位。

一、 Pt-qurey-digest

pt-query-digest主要用来分析mysql的慢日志,与mysqldumpshow工具相比,pt-querydigest 工具的分析结果更具体,更完善。pt-querydigest是PT工具集的子集。

1.1 安装:
yum install percona-toolkit-3.0.13-1.el7.x86_64.rpm 
1.2 使用:

1、直接分析慢查询文件:

pt-query-digest /var/lib/mysql/slowtest-slow.log > slow_report.log

2、分析最近12小时内的查询:

pt-query-digest --since=12h /var/lib/mysql/slowtest-slow.log > slow_report2.log

3、分析指定时间范围内的查询:

pt-query-digest /var/lib/mysql/slowtest-slow.log --since '2017-01-07 09:30:00' --until '2017-01-07 10:00:00'> > slow_report3.log

4、分析指含有select语句的慢查询

pt-query-digest --filter '$event->{fingerprint} =~ m/^select/i' /var/lib/mysql/slowtest-slow.log> slow_report4.log

5、针对某个用户的慢查询

pt-query-digest --filter '($event->{user} || "") =~ m/^root/i' /var/lib/mysql/slowtest-slow.log> slow_report5.log

6、查询所有所有的全表扫描或full join的慢查询

pt-query-digest --filter '(($event->{Full_scan} || "") eq "yes") ||(($event->{Full_join} || "") eq "yes")' /var/lib/mysql/slowtest-slow.log> slow_report6.log
二、Innotop

innotop是一个MySQL和InnoDB事务/状态监视器,它显示查询、InnoDB事务、锁等待、死锁、外键错误,打开表,复制状态,缓冲区信息,行操作、日志、I/O操作、加载图等等。你可以使用innotop同时监控多个服务器。innotp可以综合了解你的 MySQL。

2.1、安装innotop
yum install innotop-1.11.4-1.el7.noarch 
2.2、使用方法

1、基本使用

innotop --host 192.168.1.181 --user admin --password 123456 --port 3306 --delay 1 -m Q

2、参数说明,如下图:
在这里插入图片描述

注意::?可以切换至其他命令。

三、%20Orzdba

是taobao开源出来一个数据库实时性能查看工具,借助此工具你可以时刻了解的你的数据库的性能情况。

3.1 %20使用方法:

./orzdba_remote%20–host=192.168.1.181%20–user=“admin”%20–password=123456%20–port=3306%20-mysql%20-sys%202>/dev/null%20
参数说明:

–host:指定主机
–user:指定用户名
–password:数据库密码
–port:数据库的端口号

四、 Tcp抓包
4.1 安装tcp包
yum install tcpdump-4.9.2-3.el7.x86_64 -y
4.2 使用

1、通过tcpdump抓包

tcpdump -i any port 3306 -l -s 0 -w - |strings |grep -A 5 select|less

2、tcpdump+pt-query-digest

tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txt
pt-query-digest --type tcpdump mysql.tcp.txt> slow_report9.log
五、ioprofile
5.1 pt-ioprofile
pt-ioprofile定位负载来源文件,通过ps找出负载较高的进程。
5.2 使用
pt-ioprofile --profile-pid=12036 --cell=sizes 

参数说明:

–profile-pid:mysql进程的id
–cell-sizes:该参数将结果已 B/s 的方式展示出来

六、Tcprstat

通过响应时间判断数据库运行状况

6.1 安装tcprstat

如果是在64位操作系统中使用,可以直接下载二进制文件使用。步骤如下:

1)下载文件 http://github.com/downloads/Lowercases/tcprstat/tcprstat-static.v0.3.1.x86_64

2)把下载的文件移动到 /usr/bin

3)把文件名修改为 tcprstat

4)修改文件权限,增加执行权限 chmod +x /usr/bin/tcprstat 如果你想在32位操作系统中使用,那你只能自己编译了。

代码下载地址 https://github.com/Lowercases/tcprstat https://launchpad.net/tcprstat

6.2 使用

[root@localhost ~]# tcprstat –p 3306 -t 1 -n 10
timestamp count max min avg med stddev 95_max 95_avg 95_std 99_max 99_avg 99_std
1539760803 1 103 103 103 103 0 0 0 0 0 0 0
1539760804 1 108 108 108 108 0 0 0 0 0 0 0
1539760805 1 124 124 124 124 0 0 0 0 0 0 0
1539760806 1 115 115 115 115 0 0 0 0 0 0 0
1539760807 1 112 112 112 112 0 0 0 0 0 0 0
每个请求的时间在0.1ms~0.124ms

参数说明:

–p:数据库端口号
-t:刷新间隔时间
-n:输出次数
在这里插入图片描述

七、 Nicstat

nicstat网络利器,充分了解你的网卡运行状况)

7.1、安装nicstat
yum install http://rpmfind.net/linux/fedora/linux/releases/28/Everything/x8664/os/Packages/n/nicstat-1.95-7.fc27.x8664.rpm
7.2、使用方法
[root@lkjtest ~]# nicstat -z 1
 Time Int rKB/s wKB/s rPk/s wPk/s rAvs wAvs %Util Sat
15:29:14 ens160 4.03 0.91 43.18 1.60 95.61 581.8 0.00 0.00
15:29:15 ens160 3.09 0.73 35.95 2.00 88.11 375.5 0.00 0.00
15:29:16 ens160 3.93 0.66 43.99 2.00 91.52 335.5 0.00 0.00
15:29:17 ens160 3.99 0.66 45.00 2.00 90.71 335.5 0.00 0.00
15:29:18 ens160 4.04 0.66 46.99 2.00 88.04 335.5 0.00 0.00
15:29:19 ens160 3.64 0.66 42.00 2.00 88.76 335.5 0.00 0.00

参数说明:

-z:跳过0行
输出参数说明:

wKB/s,OutKB #每秒写的千字节数(transmitted)
rMbps,RdMbps #每秒读的百万字节数K(received)
%Util #接口的利用率百分比
Sat #每秒的错误数,接口接近饱和的一个指标

八、 Dstat
8.1 安装dstat
yum install dstat -y
8.2 使用
[root@localhost ~]# dstat -tclmndy 1 
参数说明:

-t:enable time/date output
-c:enable cpu stats
-l:enable load stats
-m:enable memory stats
-n:enable network stats
-d:enable disk stats
-y:enable system stats

在这里插入图片描述

九、 vmtouch

vmtouch是一个学习和控制unix和类unix系统的文件系统缓存的工具。

9.1、快速安装
$ git clone https://github.com/hoytech/vmtouch.git
$ cd vmtouch
$ make
$ sudo make install
9.2、使用方法
显示
$ vmtouch -v big-dataset.txt
回收
vmtouch -ve a.txt
十、 oprofile

Oprofile 是一个开源的profiling工具,通过取样来工作,是一个全局的抽样统计工具。cpu无端占用高?应用程序响应慢?苦于没有分析的工具?找它就对了!通过计数采样,帮助我们从进程、函数、代码层面找出占用cpu的”罪魁祸首”。

​ ###### 10.1 安装

yum install http://www.rpmfind.net/linux/centos/7.5.1804/os/x86_64/Packages/oprofile-0.9.9-25.el7.x86_64.rpm -y
10.2 使用方法
1、使用

#加载oprofile内核模块 opcontrol --init 
#我们对内核的取样没兴趣 opcontrol --setup --no-vmlinux
#在开始收集采样数据前回顾下我们的设置 opcontrol --status
#清除上一次采样到的数据 opcontrol --reset 
#运行我们的程序 opcontrol --start 
#收集采样数据 opcontrol --dump
#关闭守护程序, 同时准备好采样的数据 opcontrol --shutdown
注意:如报Cannot find event CPUCLKUNHALTED,解决方法如下:

#解决步骤
$sudo opcontrol --deinit
Daemon not running
Unloading oprofile module
 
$sudo modprobe oprofile timer=1 
 
$dmesg|grep oprofile|tail -n 1
oprofile: using timer interrupt.
如果你看到上面的字说明你成功了。
我们再试验下:
$sudo opcontrol --init && sudo opcontrol --reset && sudo opcontrol --start
Using 2.6+ OProfile kernel interface.
Using log file /var/lib/oprofile/samples/oprofiled.log
Daemon started.
Profiler running.
2、获取采样信息

#系统级别的 opreport --long-filenames
#模块级别的 opreport image:foo -l
#源码级别的 opannotate image:foo -s
3、使用样例

opcontrol --deinit
modprobe oprofile timer=1
$dmesg|grep oprofile|tail -n 1
(oprofile: using timer interrupt.)
opcontrol --reset
pcontrol --separate=lib --no-vmlinux
--start --image=/home/mysql_user/mysqlhome/bin/mysqld
opcontrol --dump
opcontrol --shutdown
opreport -l /home/mysql_user/mysqlhome/bin/mysqld

原文地址链接

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105852.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 协同过滤推荐算法(java原生JDK实现-附源码地址)

    协同过滤推荐算法(java原生JDK实现-附源码地址)一、项目需求1.需求链接https://tianchi.aliyun.com/getStart/information.htm?raceId=2315222.需求内容竞赛题目在真实的业务场景下,我们往往需要对所有商品的一个子集构建个性化推荐模型。在完成这件任务的过程中,我们不仅需要利用用户在这

    2022年4月6日
    31
  • 7本免费的Java电子书和教程

    7本免费的Java电子书和教程本文由ImportNew-唐小娟翻译自Javapapers。欢迎加入翻译小组。转载请见文末要求。1.ThinkinginJava(ThirdEdition)本书的作者是BruceEckel,它一直都是Java最畅销的免费电子书。这本书可以帮助你系统的学习Java,里面包含有很多好的代码示例。第三版仍旧是免费的,直到第四版才开始收费,不过仍旧值得买一本收藏。Think…

    2022年7月8日
    26
  • java%f什么意思_浅析Java中print、printf、println的区别「建议收藏」

    java%f什么意思_浅析Java中print、printf、println的区别「建议收藏」printf主要是继承了C语言的printf的一些特性,可以进行格式化输出print就是一般的标准输出,但是不换行println和print基本没什么差别,就是最后会换行System.out.printf(“thenumberis:d”,t);参照JAVAAPI的定义如下:’d’整数结果被格式化为十进制整数’o’整数结果被格式化为八进制整数’x’,’X’整数结果被格式化为十六…

    2022年7月8日
    21
  • 分布式系统设计权衡之CAP(一致性,可用性,分区容错性)[通俗易懂]

    分布式系统设计权衡之CAP(一致性,可用性,分区容错性)[通俗易懂]https://blog.csdn.net/Sun_P0/article/details/50221787写在最前:1.为什么学习并记录分布式设计理念一系列相关的东西在日常工作中系统设计评审的时候,经常会有一些同事抛出一些概念,高可用性,一致性等等字眼,他们用这些最基本的概念去反驳系统最初的设计,但是很多人理解的可用性,一致性等等问题,都是自己拍脑袋想的,或者根本和最原始表达的意思就不…

    2022年7月25日
    12
  • 2020年支持java8的Java反编译工具汇总

    2020年支持java8的Java反编译工具汇总luyten是一款操作简单、功能实用的java反编译工具,软件支持*.JAR、*.zip、*.class等类型文件的反编译操作,还原度非常高,支持更多功能设置,如显式导入、类型、合成组件等等,用户可根据不同的需求选择合适的显示项目,结果更明了。luyten是个人用过的最好用的java反编译工具。哪怕使用jd-gui反编译时会出现“//INTERNALERROR//”错误,无法反编译,此工具…

    2022年4月20日
    99
  • 微机原理课程设计电梯控制系统_列举一个计算机控制系统的应用实例

    微机原理课程设计电梯控制系统_列举一个计算机控制系统的应用实例1、针对一个具有大纯时延时间的一阶惯性环节(G(s)=K*e-θs/(Ts+1))温度控制系统和给定的系统性能指标,(工程要求相角裕度为30~60,幅值裕度>6dB);要求测量范围-50℃~200℃,测量精度0.5%,分辨率0.2℃;2、书面设计一个计算机控制系统的硬件布线连接图,并转化为系统结构图;3、选择一种控制算法并借助软件工程知识编写程序流程图;4、用MATLAB和SIMULINK进…

    2022年10月4日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号