今天突然有个同事问题一个问题, 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. php 判断是不是https链接

    如果当前运行的 PHP 版本等于或高于提供的版本号,该函数返回布尔值 TRUE ,反之则返回 FALSE . function is_https() { if (!empty($_SERVER['HT ...

  2. ajax遇到的问题

    今天做了个小小的实验,用ajax XMLHttpRequest对象读取服务器上的txt文件里的内容,展示出来 直接把html文件放在桌面用浏览器打开,没有反应,部分代码如下: function oHt ...

  3. excel转化为Json

    Sheet sheet;        Workbook book;        Cell cell1,cell2,cell3,cell4;        JSONArray jsonArray = ...

  4. Angular服务器通信之:$http

    $http服务提供了浏览器XMLHttpRequest对象的封装,并且作为Angular中和后台服务通信的底层服务,在此之上Angular还提供了一个可选模块ngResource支持与RESTFul的 ...

  5. Redis学习笔记(二)-key相关命令【转载】

    转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...

  6. c# 如何判断字符串中相同字符串的个数 (相同字符在字符串中出现的次数)

    /// <summary> /// 计算字符串中子串出现的次数 /// </summary> /// <param name="str">字符串 ...

  7. jQuery笔记(1)

    jQuery 是一个类库 拥有众多js函数的类库 jQuery 大大简化了js的书写代码,看的舒服,用的爽. jQuery 是一个数组,它能够隐性的遍历. 比如 ${"button" ...

  8. 看unix高级编程时遇到apue.h找不到的问题

    最近学习 Unix 环境高级编程这本书,第一个例子就碰到了问题,下面是解决办法. 一开始看到这本书,刚翻了几页,就觉得对味.按照书中的代码做练习时,编译代码文件提示fatal error: apue. ...

  9. Shorten Diameter

    Shorten Diameter Time limit : 2sec / Stack limit : 256MB / Memory limit : 256MB Score : 600 points P ...

  10. Android Fragment 真正的完全解析(上)--转

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37970961 自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fra ...