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【转】的更多相关文章

  1. Linux下top命令监控性能状态

    1.性能分析因素:CPU.内存.网络.磁盘读写 2.系统对应的应用类型主要分为以下两种: IO Bound:一般都是高负荷的内存使用以及存储系统,IO范畴的应用就是一个大数据处理的过程:通常数据库软件 ...

  2. MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控

    第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一 ...

  3. 第 18 章 高可用设计之 MySQL 监控

    前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一个系统,无论如何设计如何维护,都无法完全避免出 ...

  4. MySql(十八):MySql架构设计——高可用设计之 MySQL 监控

    前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一个系统,无论如何设计如何维护,都无法完全避免出 ...

  5. zabbix监控Mysql中的QPS/TPS

    今天我们来了解一下如何通过zabbix监控来监控我们msyql数据库中的TPS和QPS,提到这两个概念,我们先来了解究竟什么是QPS,TPS呢?它们是如何计算得到的呢?我们来看一下 QPS(Quest ...

  6. mysql状态查看 QPS/TPS/缓存命中率查看

    运行中的mysql状态查看   对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态.    (1)QPS(每秒Query量)  QPS = Questions(or Queries ...

  7. mysql状态查看 QPS/TPS/缓存命中率查看【转】

    运行中的mysql状态查看   对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态.    (1)QPS(每秒Query量)  QPS = Questions(or Queries ...

  8. 【MySQL】为什么不要问我DB极限QPS/TPS

    为什么不要问我DB极限QPS/TPS 背景 相信很多开发都会有这个疑问,DB到底可以支撑多大的业务量,如何去评估?对于这个很专业的问题,DBA也没有办法直接告诉你,更多的都是靠经验提供一个看似靠谱的结 ...

  9. MySQL数据库性能优化与监控实战(阶段四)

    MySQL数据库性能优化与监控实战(阶段四) 作者 刘畅 时间 2020-10-20 目录 1 sys数据库 1 2 系统变量 1 3 性能优化 1 3.1 硬件层 1 3.2 系统层 1 3.3 软 ...

随机推荐

  1. [AT2268] [agc008_f] Black Radius

    题目链接 AtCoder:https://agc008.contest.atcoder.jp/tasks/agc008_f 洛谷:https://www.luogu.org/problemnew/sh ...

  2. Merge Two Sorted Lists - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Merge Two Sorted Lists - LeetCode 注意点 两个链表长度可能不一致 解法 解法一:先比较两个链表长度一致的部分,多余的部分 ...

  3. 使用regsrv32.exe绕过应用程序白名单(多种方法)

    0x00 regsvr简介 regsvr32表示Microsoft注册服务.它是Windows的命令行实用工具.虽然regsvr32有时会导致问题出现,但它是Windows系统文件中的一个重要文件.该 ...

  4. (转)解决dubbox-demo-provider.xml报错的问题:提示Failed to read schema document

    背景:在eclipse项目中,经常会遇到xml文件提示找不到.xsd文件的情况.很有必要弄清xsd文件的加载过程! 1 解决过程 dubbo-demo-provider导入eclipse后dubbox ...

  5. HDU--4705

    题目: Y 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4705 分析:树形dp的思想,枚举中间点. #include<iostream> ...

  6. GeoDa计算全局Moran‘I

    GeoDa计算全局Moran‘I 1.导入包含数据的.shp文件 2.创建权重矩阵,点击Weight Manger,再点击Create, weights file ID variable(其中包含的数 ...

  7. 线性回归,感知机,逻辑回归(GD,SGD)

    线性回归 线性回归是一个回归问题,即用一条线去拟合训练数据 线性回归的模型: 通过训练数据学习一个特征的线性组合,以此作为预测函数. 训练目标:根据训练数据学习参数(w1,w2, ... , wn,b ...

  8. Go_15:GoLang中面向对象的三大特性

    有过 JAVA 语言学习经历的朋友都知道,面向对象主要包括了三个基本特征:封装.继承和多态.封装,就是指运行的数据和函数绑定在一起,JAVA 中主要是通过 super 指针来完成的:继承,就是指 cl ...

  9. P4310 绝世好题

    P4310 绝世好题 题目描述 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len). 说明 对于100%的数据,1<=n ...

  10. 使用Java API的5个技巧

    原文出处:CSDN邓帅 本文介绍了一些关于Java API安全和性能方面的简单易用的技巧,其中包括保证API Key安全和开发Web Service方面中在框架方面选择的一些建议. 程序员都喜欢使用A ...