Mysql 监控性能状态 QPS/TPS【转】
QPS(Query per second) 每秒查询量
TPS(Transaction per second)每秒事务量
这是Mysql的两个重要性能指标,需要经常查看,和Mysql基准测试的结果对比,如果值过高,就要尽快处理了
计算方法
01
QPS
QPS = Queries / Seconds
Queries 是系统状态值--总查询次数,可以通过 show status 查询得出
Seconds 是监控的时间区间,单位为秒
例如采样10秒内的查询次数,那么先查询一次Queries值(Q1),等待10秒,再查询一次Queries值(Q2)
QPS = (Q2 - Q1) / 10
02
TPS
mysql中没有直接的事务计数器,需要通过事务提交数和事务回滚数来计算
TPS = (Com_commit + Com_rollback) / Seconds
Com_commit、Com_rollback 的值通过 show status 查询得出
计算思路与 QPS 相似
统计脚本
上面是QPS/TPS的统计思路,实际操作中如果用手动方式计算很不方便,最好用程序实现
mysqladmin 的 extended-status 指令和 show status 差不多,可以查看mysql的状态值,如
# mysqladmin -uroot -p'密码' extended-status
其中含有我们需要的状态值,那么就可以分析extended-status的结果信息,然后计算,最后显示出来
统计目标
每隔一秒统计一次 QPS、TPS
mysql 还有两个信息比较重要:
Threads_connected 当前连接的线程的个数
Threads_running 运行状态的线程的个数
这两个值也在extended-status的结果中,所以可以一道显示出来
最后统计结果信息包括:
QPS、TPS、Threads_connected、Threads_running
先看下统计结果的展现形式
基本思路
每秒钟运行一次extended-status,使用awk分析结果值,从中筛选出我们需要的值:
Queries、Com_commit、Com_rollback、Threads_connected、Threads_running
QPS = Queries值 - 上一次的值
TPS = (Com_commit值 - 上一次的值) + (Com_rollback值 - 上一次的值)
因为是1秒钟统计一次,所以计算QPS/TPS时就不用除以秒数了
脚本代码
代码分析
awk是代码中的重点,mysqladmin 的执行结果通过管道传给 awk 进行分析
'BEGIN{flag=0;
print "";
print "QPS TPS Threads_con Threads_run ";
print "------------------------------------- "}
这部分是初始设置,打印出表头
flag=0 是设置一个标识位,后面用到
$2 ~ /Queries$/ {q=$4-lq;lq=$4;}
其中 $2 $4 代表某列的内容
awk是按行分析并按空格分割的,例如行信息为:
| Queries | 213263713 |
按空格分割后得到5列:
'|', 'Queries', '|', '213263713', '|'
$2 : Queries
$4 : 213263713
那么这句的意思就是:
当第2列的值匹配‘Queries’时,
变量q = 第4列的值 - 变量lq的值,
变量lq = 第4列的值
变量q 就是 QPS值,用这一次的 Queries值 减去 上一次的值
$2 ~ /Com_commit$/ {c=$4-lc;lc=$4;}
$2 ~ /Com_rollback$/ {r=$4-lr;lr=$4;}
$2 ~ /Threads_connected$/ {tc=$4;}
$2 ~ /Threads_running$/ {tr=$4;
这几句的意思与上一句类似
if(flag==0){
flag=1;
}
这里用到了flag这个标识位,意思是对第一次的分析结果什么都不做,因为这句
{q=$4-lq;lq=$4;}
q=$4-lq; 中的 lq 在第一次分析中还没有值
else {
printf "%-6d %-8d %-10d %d \n", q,c+r,tc,tr;
}
这部分就是打印统计结果信息
下面是脚本代码下载地址,有兴趣的话可以下来实验一下
http://devdd.oss-cn-beijing.aliyuncs.com/mysql_QPS_TPS.txt
#!/bin/bash
mysqladmin -uroot -p'瀵嗙爜' extended-status -i1|awk \
'BEGIN{flag=0;
print "";
print "QPS TPS Threads_con Threads_run ";
print "------------------------------------- "}
$ ~ /Queries$/ {q=$-lq;lq=$;}
$ ~ /Com_commit$/ {c=$-lc;lc=$;}
$ ~ /Com_rollback$/ {r=$-lr;lr=$;}
$ ~ /Threads_connected$/ {tc=$;}
$ ~ /Threads_running$/ {tr=$; if(flag==){
flag=; count=
}else {
printf "%-6d %-8d %-10d %d \n", q,c+r,tc,tr;
} }'
Mysql 监控性能状态 QPS/TPS【转】的更多相关文章
- Linux下top命令监控性能状态
1.性能分析因素:CPU.内存.网络.磁盘读写 2.系统对应的应用类型主要分为以下两种: IO Bound:一般都是高负荷的内存使用以及存储系统,IO范畴的应用就是一个大数据处理的过程:通常数据库软件 ...
- MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控
第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一 ...
- 第 18 章 高可用设计之 MySQL 监控
前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一个系统,无论如何设计如何维护,都无法完全避免出 ...
- MySql(十八):MySql架构设计——高可用设计之 MySQL 监控
前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一个系统,无论如何设计如何维护,都无法完全避免出 ...
- zabbix监控Mysql中的QPS/TPS
今天我们来了解一下如何通过zabbix监控来监控我们msyql数据库中的TPS和QPS,提到这两个概念,我们先来了解究竟什么是QPS,TPS呢?它们是如何计算得到的呢?我们来看一下 QPS(Quest ...
- mysql状态查看 QPS/TPS/缓存命中率查看
运行中的mysql状态查看 对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态. (1)QPS(每秒Query量) QPS = Questions(or Queries ...
- mysql状态查看 QPS/TPS/缓存命中率查看【转】
运行中的mysql状态查看 对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态. (1)QPS(每秒Query量) QPS = Questions(or Queries ...
- 【MySQL】为什么不要问我DB极限QPS/TPS
为什么不要问我DB极限QPS/TPS 背景 相信很多开发都会有这个疑问,DB到底可以支撑多大的业务量,如何去评估?对于这个很专业的问题,DBA也没有办法直接告诉你,更多的都是靠经验提供一个看似靠谱的结 ...
- MySQL数据库性能优化与监控实战(阶段四)
MySQL数据库性能优化与监控实战(阶段四) 作者 刘畅 时间 2020-10-20 目录 1 sys数据库 1 2 系统变量 1 3 性能优化 1 3.1 硬件层 1 3.2 系统层 1 3.3 软 ...
随机推荐
- Java IO流学习总结 - BIO
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据 ...
- bzoj1026windy数
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1026 Description windy定义了一种windy数.不含前导零且相邻两个数字之 ...
- 前端学习 -- image标签和meta标签
Image标签 使用img标签来向网页中引入一个外部图片, img标签也是一个自结束标签 属性: src:设置一个外部图片的路径 alt:可以用来设置在图片不能显示时,对图片的描述 搜索引擎可以通过a ...
- Android学习笔记——关于onConfigurationChanged(转)
从事Android开发,免不了会在应用里嵌入一些广告SDK,在嵌入了众多SDK后,发现几乎每个要求在AndroidManifest.xml申明Activity的广告SDK都会要求加上注明这么一句属性: ...
- 解题:CQOI 2017 小Q的表格
题面 首先观察$b*f(a,a+b)=(a+b)*f(a,b)$这个东西 可以化成$\frac{f(a,a+b)}{a+b}=\frac{f(a,b)}{b}$,发现这类似辗转相除求gcd 而我们两边 ...
- 解题:TJOI 2015 弦论
题面 好像是个经典问题,然而我没做过 建SAM,然后经过每个节点的子串数目就可以求了,多个相同子串算一个的话就把所有siz都搞成$1$,否则就是$right$集合的大小,然后就是常见的递推 求第$k$ ...
- bzoj 3779: 重组病毒
一道好题~~ 一个点到根传染需要的时间是这段路径上不同颜色的数目,一个点子树到根平均传染时间就是加权平均数了(好像是废话). 所以只要用线段树维护dfs序就这个可以了,换根的话一个点的子树要么在dfs ...
- pycharm配置总结
1. 快捷键 格式化代码:Ctrl + Alt + L 2. A scheme with this name already exists or was deleted without applyin ...
- NO.6LINUX基本命令
1.练习1 ) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cd / cat /etc/passwd /etc/group>1.txt 2) 将用户信息数据库文 ...
- 总结: 《jQuery基础教程》 1-4章
前言: 因为公司的项目用到了jQuery+Bootstrap,而Bootstrap基于jQuery,突然发现自己只是很久前看过jQuery的视频教程,对jQuery的一些API有一些了解,在使用中还是 ...