MySQL性能分析


原文链接: MySQL性能分析

ps-top - a top-like program for MySQL

Install:

go get -u github.com/sjmudd/ps-top/cmd/ps-top
go get -u github.com/sjmudd/ps-top/cmd/ps-stats

mytop

mytop -h 10.114.0.10 -upmm -ppercona2018 -s 1

mytop 是一个类似 Linux 下的 top 命令风格的 MySQL 监控工具,可以监控当前的连接用户和正在执行的命令

mytop 的结果信息主要分为上下两个部分,上面是各项指标,下面是线程列表
第一行显示了主机名称,还有至今 MySQL 的运行时间 (以 days hour:minutes:seconds 为格式)。
第二、三行的 Queries 显示了至今执行的 SQL 查询语句总数,另外还有目前每秒处理的查询数和速度。
第四行的 Key Efficiency 就是传说中的缓存命中率了,如果太低了你可能要调整你的 MySQL 设置,或者调整一下表的结构,后面还有目前的进出速度。
最下方的区域就是目前链接到数据库的各个线程,你可以按 k 杀死一个线程,或者按 f 了解特定线程的信息

Queries: 81.1M qps: 45 Slow: 706.0 Se/In/Up/De(%): 29/01/01/00
第2行是整体信息

    Queries 服务器处理过的query总数
    qps 每秒处理的query数量的平均值
    Slow 慢查询总数
    Se/In/Up/De(%) Select,Insert,Update,Delete 各自的占比

qps now: 502 Slow qps: 0.0 Threads: 29 ( 5/ 3) 32/00/00/00

第3行是实时信息,本刷新周期内的信息统计,刷新周期是在配置文件中指定

qps now 本周期内的每秒处理query的数量
Slow qps 本周期内的每秒慢查询数量
Threads 当前连接线程数量,后面括号内的第一个数字是active状态的线程数量,第二个数字是在线程缓存中的数量
最后一列是本周期内的 Select,Insert,Update,Delete 各自的占比

`Key Efficiency: 99.2%  Bps in/out: 11.9k/32.1k   Now in/out: 92.7k/275.0k`

    Key Efficiency 表示有多少key是从缓存中读取,而不是从磁盘读取的
    Bps in/out 表示mysql平均的流入流出数据量
    Now in/out 是本周期内的流入流出数据量

剩下的就是线程信息列表

列出了当前的mysql线程,根据idle状态时间排序,通过 o 键可以选择升序或降序

列表中显示出各线程的详细信息,例如 线程ID、用户名、客户端的地址、连接的数据库名称、详细查询语句

会发现 "show full processlist" 一直都在,因为 mytop 会使用这个语句收集 mysql 信息
辅助命令

mytop 提供了一些有用的命令,在运行界面按下相应按键即可

例如按下
?,会进入帮助界面

其他示例:
h 可以根据客户端地址进行过滤
s 可以根据用户名进行过滤
k 可以杀死某个线程
m 进入QPS模式,只是动态显示QPS数量

mytop 快捷键
s:设定更新时间
p:暂停画面更新
q:离开
u:只看某个使用者的 thread
o:反转排列顺序

`