mysql qps与tps

 在做db基准测试的时候,qps,tps 是衡量数据库性能的关键指标。本文比较了网上的两种计算方式。先来了解一下相关概念。
概念介绍:
QPS:Queries Per Second         查询量/秒,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理查询量多少的衡量标准。
TPS :  Transactions Per Second   是事务数/秒,是一台数据库服务器在单位时间内处理的事务的个数。 

对于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

本次其实想说明的是tps和qps。
对于tps,有的人将其理解为一个在数据操作中的事务,即插入整条的开始时间,连续执行多条语句后,再执行COMMIT提交。
在进行sysbench的测试过程中,为了测试期结论的正确性 ,故意开启了general log,在测试完成时,一共记录了6298564个记录。测试时间为180秒。
测试结果:
tps:1743
pqs:34872
而在关闭general log的情况下。同样的测试,其它任何因素均不改变的情况下
测试结果:
tps:3361
pqs:67223
从上面可见,开启general log对mysql的性能影响可谓极大。
同时根据开启general时得到的tps和qps反推,其计算方法tps的方法确实是根据一组begin...commit来计算的。即:tps的计算,以begin开始,以commit结束。
那么为何还需要qps呢,答案是必须的,因为tps不能正确反应mysql系统的真正查询能力,所以需要pqs来进行横向对比。而qps的计算则是不管任何sql,包括set,begin,select,insert,delete,commit,connect,prepare,只是出现,就算是参与计算的资本。所以,可见对于mysql来说,其qps的计算,确实有虚高的嫌疑。因为像设置环境变量set这种东西,我觉得是不应该算在里面的。

开启general日志的方式如下,默认是写到文件中,但是可以直接让其写到cvs文件中:
set global general_log=on;
set global general_log=off;
use mysql
show create table general_log\G
set global log_output='TABLE';
show global variables like 'log_output'; 

参考文章

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值