MYSQL怎样衡量吞吐量

如何查询吞吐量

Questions

questions:已经发送给服务器的查询的个数。

MySQL内部有一个名为 Questions 的计数器,客户端每发送一个查询语句,其值就会加一,可利用其来衡量查询吞吐量

由 Questions 指标带来的以客户端为中心的视角常常比相关的 Queries 计数器更容易解释。作为存储程序的一部分,后者也会计算已执行语句的数量,以及诸如 PREPARE 和 DEALLOCATE PREPARE 指令运行的次数,作为服务器端预处理语句的一部分。

> SHOW GLOBAL STATUS LIKE "Questions";
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| Questions     | 134721 |
+---------------+--------+

com_insert

com_select: select语句执行了多少次。

大家都知道com_insert等com_xxx参数可以用来监控数据库实例的访问量,也就是我们常说的QPS。并且基于MySQL的复制原理,所有主库执行的操作都会在从库重放一遍保证数据一致,那么主库的com_insert和从库的com_insert理论上应该是相等的。

在mysql中,计算qps与qts时,目前有两种方式。具体的算法如下:

大家知道,在mysql中,计算qps与qts时,目前有两种方式。具体的算法如下:

方法一:基于 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
  • 在使用question方式进行计算时,人为拉高了qps的结果,相对来说,使用com_select此种方式来计算qps,相对比较帖近真实情况一些,也就是说,在同等条件下,拉高了qps的值。
    具体请参考:https://blog.csdn.net/wxc20062006/article/details/79786800

qps和tps越大越好
小型公司(10到30人)
* tps : 上百
* 读写,qps: 上万

一般我们使用sysbench做压力测试。

参考:https://blog.csdn.net/zhouxin1985/article/details/7896849

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/87934258
今日推荐