今天突然有个同事问题一个问题, mysqlTPS和QPS的计算公式是什么?

以前确实也没有关注过这个计算公式,所以查了下学习了下; 下面是参考内容。

 在做db基准测试的时候,qps,tps 是衡量数据库性能的关键指标。本文比较了网上的两种计算方式。先来了解一下相关概念。
概念介绍:
QPS:Queries Per Second           查询量/秒,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理查询量多少的衡量标准。
TPS :  Transactions Per Second      事务数/秒,是一台数据库服务器在单位时间内处理的事务的个数。 
 
如何计算:
从网上查看如果获取mysql 的qps,tps 的方法有如下两种:
 
方法一
  基于 questions  计算qps, 基于  com_commit  com_rollback 计算tps
questions = show global status like 'questions';
uptime = show global status like 'uptime';
qps = questions/uptime com_commit = show global status like 'com_commit';
com_rollback = show global status like 'com_rollback';
uptime = show global status like 'uptime';
tps = (com_commit + com_rollback) / uptime
 
方法二  
  基于 com_* 的status 变量计算tps , qps
使用如下命令:
show global status where variable_name in('com_select','com_insert','com_delete','com_update');  获取间隔1s 的 com_*的值,并作差值运算
del_diff = (int(mystat2['com_delete']) - int(mystat1['com_delete']) ) / diff
ins_diff = (int(mystat2['com_insert']) - int(mystat1['com_insert']) ) / diff
sel_diff = (int(mystat2['com_select']) - int(mystat1['com_select']) ) / diff
upd_diff = (int(mystat2['com_update']) - int(mystat1['com_update']) ) / diff
上述计算方法的值准确合适吗?
下图是我手工做测试的结果:
1. 针对mysql innodb 表的dml 操作做了各个量的统计,结果如下:
 
由上图可以得出结论:
a.  com_commit, com_rollback 与显示指定transaction无关,只和显式提交commit rollback 有关。
b.  不管dml的结果是否成功,com_* 都会增加1 。
 
2.  针对myisam 表的测试
 
 
a.  对于myisam 表 进行dml操作 只有questions 改变其他值不变。
b.  对于myisam 存储引擎使用com_* 计算其tps,qps 是不准确的,使用questions 的值计算相对比较合适。
 
利用脚本使用不同的变量获取数据库的qps,tps 的对比图:
qps_s      是基于 com_select
qps_ques 是基于 questions ,
tps_iud    是基于 com_insert, com_update,com_delete 之和,
tps_com_rol是基于 com_commit com_rollback 之和
由上图可以查看 基于questions 要比基于com_select的数值要大,因为questions本身是所有db访问的集合。
 
总结:
  Questions 是记录了从mysqld启动以来所有的select,dml 次数包括show 命令的查询的次数。这样多少有失准确性,比如很多数据库有监控系统在运行,每5秒对数据库进行一次show 查询来获取当前数据库的状态,而这些查询就被记录到QPS,TPS统计中,造成一定的"数据污染".
如果数据库中存在比较多的myisam表,则计算还是questions 比较合适。
如果数据库中存在比较多的innodb表,则计算以com_*数据来源比较合适。

参考: http://blog.itpub.net/22664653/viewspace-767265/

mysql中TPS, QPS 的计算方式的更多相关文章

  1. zabbix监控Mysql中的QPS/TPS

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

  2. MySQL中备份的几种方式

    前言: 并不是每家公司都高大上,并不是每家公司都会用一些很前沿的技术来做备份这一块,有些企业或者有些行业或者团队本身由于各方面的原因使用简单或者复杂的方式来做备份这块,这次这个文档算是对以前工作的总结 ...

  3. 利用脚本获取mysql的tps,qps等状态信息

    #!/bin/bash mysqladmin -uroot -p'123456' extended-status -i1|awk 'BEGIN{local_switch=0;print "Q ...

  4. MySQL中有关NULL的计算

    mysql> select NULL=NULL; #判断两个NULL是否相等,结果不是1也不是0 +-----------+ | NULL=NULL | +-----------+ | NULL ...

  5. mysql 中通过身份证号码计算年龄

    SELECT DATE_FORMAT(NOW(), '%Y') - SUBSTRING( '换成对应身份证',7,4) AS age

  6. MySQL中数据的基本查询方式

    1.查询所有列 select * from 表名称; 2.查询指定列 select 字段名,字段名,字段名 from 表名称; 3.查询时添加常量列(临时备注) select 字段名,字段名,字段名, ...

  7. mysql中json数据的拼接方式

    SELECT CONCAT('[', GROUP_CONCAT( CONCAT('{"id":"',STRUCTURE_ID,'"'),',', CONCAT( ...

  8. mysql中修改密码的方式

    参考地址:https://www.cnblogs.com/yang82/p/7794712.html mysql中修改用户密码的方式: 最简单的方法就是借助第三方工具Navicat for MySQL ...

  9. flex布局中flex-grow与flex-shrink的计算方式

    CSS 中的 Flex(弹性布局) 可以很灵活的控制网页的布局,其中决定 Flex 布局内项目宽度/高度的是三个属性: flex-basis, flex-grow, flex-shrink. flex ...

随机推荐

  1. jquery 限制字数 显示输入字数 插件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. linux视频学习5(top, 网络监控

    top命令的详解: 1. top :动态监控进程. 第一行:当前系统时间:  up  4days :服务器启动后的持续时间. 5 user 当前服务器上的用户数目 ; load average :负载 ...

  3. HDU 4027 <线段树,区间√>

    题目连接 题意 给出一个区间,每次把[l,r]内的值√,维护区间和. 坑: £:l会比r大,swap. £: 当f[i].sum=f[i].r-f[i].l+1;,不修改.因为保证每个数都大于等于1, ...

  4. makefile中使用echo向文件中输出版本号和编译时间

    @echo "#define BUILD_TIME" `date +"%F_%H:%M:%S"` > buildTime_svnVer.h @echo & ...

  5. 在CDockablePane中嵌入CFormView

    CDockablePane中嵌入CFormView与嵌入CDialogEx稍有不同,差异主要体现在CFormView类本身与CDialogEx类的不同上,CDockablePane层面的操作完全相同. ...

  6. 将所需要的图标排成一列组成一张图片,方便管理。li的妙用

    我在做一个网站的header 但是视频教学里面将电话图标,微信图标,以及每一个英文字母右边的小点拼成一副图. (图片的名字是top_ioc.png)拼成的整个图片作为li的背景.通过移动就可以分别将每 ...

  7. hack,不同的IE浏览器

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. POJ3468--A Simple Problem with Integers--线段树/树状数组 改段求段

    题目描述 You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type ...

  9. apache-tomcat-7.0.70无法进入Manager管理App项目

    在tomcat文件夹找到conf文件夹中的tomcat-user.xml文件,用记事本打开,在最下面可以看到tomcat默认把用户注释掉了,也就是说打开tomcat主页是进不去管理页面的.方法如下:找 ...

  10. Spring的事务传播机制

    1.事务传播类型     新建事务 required required_new   - 挂起当前    非事务方式运行 supports not_supported  - 挂起当前 never    ...