当前位置:Gxlcms > 数据库问题 > 【MySQL】计算 TPS,QPS 的方式

【MySQL】计算 TPS,QPS 的方式

时间:2021-07-01 10:21:17 帮助过:2人阅读

概念介绍: 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   上述计算方法的值准确合适吗? 下图是我手工做测试的结果: a 针对mysql innodb 表的dml 操作做了各个量的统计,结果如下: 技术分享 由上图可以得出结论: 1 com_commit, com_rollback 与显示指定transaction无关,只和显式提交commit rollback 有关。 2 不管dml的结果是否成功,com_* 都会增加1 。   b 针对myisam 表的测试: 技术分享 1 对于myisam 表 进行dml操作 只有questions 改变其他值不变。 2 对于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_*数据来源比较合适。

【MySQL】计算 TPS,QPS 的方式

标签:

人气教程排行