请问MYSQL数据库QPS,TPS采用哪种计算方式?

image.png

疑问1:
为什么按照上图两种公式QPS的两个计算结果差了2倍?
疑问2(已解决):
为什么按照上图两种公式TPS的两个计算结果差了几千倍?
TPS结果差异原因:因为Com_commit和Com_rollback只统计了显示提交的事务。通过show global variables like 'autocommit';可以发现这个数据库默认是隐式提交,所以结果不准确

QPS公式1需要的数据
Questions 500w

QPS公式2需要的数据
Com_select 250w
Com_insert+delede+update 3w
合计 253w

阅读 3.1k
1 个回答

Questions 其实包括了 很多sql语句的执行,ddl, dml, show, set等。

比如 SHOW GLOBAL STATUS LIKE 'Questions';也会计算在内的。

可以参考官网文档:https://dev.mysql.com/doc/ref...

The number of statements executed by the server. This includes only statements sent to the server by clients and not statements executed within stored programs, unlike the [`Queries`](https://dev.mysql.com/doc/refman/8.0/en/server-status-variables.html#statvar_Queries) variable. This variable does not count `COM_PING`, `COM_STATISTICS`, `COM_STMT_PREPARE`, `COM_STMT_CLOSE`, or `COM_STMT_RESET` commands.

The discussion at the beginning of this section indicates how to relate this statement-counting status variable to other such variables.

QPS,如果不考虑存储过程的执行,可以采用 QPS=(Com_select + Com_insert + Com_delete + Com_update) / Uptime

不过,要相对准确表达QPS, 采用 QPS=Questions/Uptime 计算。

TPS的话,采用TPS=(Handler_commit + Handler_rollback)/Uptime 会更加准确。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题