文章

TPS与QPS的区别详解

TPS与QPS的区别详解

在系统性能评估与压测中,TPS(Transactions Per Second)QPS(Queries Per Second) 是两个常被提及的概念。虽然它们看起来类似,但实际上含义、应用场景和衡量的角度都有很大不同。本文将对两者进行清晰的区分和实际应用建议。


什么是 TPS?

TPS(Transactions Per Second) 指的是每秒完成的事务数量
一个“事务”并不是数据库中的 ACID 概念,而是在压测中人为定义的业务操作集合。

🔹 通常一个事务包括

  1. 客户端向服务器发送请求;
  2. 服务器内部处理(包括业务逻辑、数据库查询等);
  3. 服务器返回响应给客户端。

如果每秒可以完整执行 N 个这样的事务,则 TPS = N。

📌 事务定义灵活

  • 可以是一个接口请求(例如:登录接口);
  • 可以是一组接口组合(例如:下单流程);
  • 可以是一个完整业务流。

在 JMeter 等压测工具中,可以通过“事务控制器”包裹多个请求,从而定义一个事务。


什么是 QPS?

QPS(Queries Per Second) 是指每秒响应的查询请求数量
原本是用于描述数据库查询性能的指标,表示每秒执行的 SQL 查询次数。

虽然 QPS 后来也被延伸到接口压测中,但它本质上只适用于查询类操作,不包括增删改请求

📌 所以

  • QPS 更适合用于评估数据库、搜索引擎等系统的查询处理能力;
  • 对于包含复杂业务逻辑的接口或流程,QPS 的覆盖面明显不足。

TPS 与 QPS 的区别

比较维度TPSQPS
全称Transactions Per SecondQueries Per Second
概念来源性能测试数据库领域
涵盖内容一个或多个请求组成的完整事务单次查询操作
是否包含增删改✅ 是❌ 否
适用场景压测接口流程、业务链路查询型接口、数据库性能测试
指标灵活性高,可人为定义低,固定指向查询操作

举例说明

  • 如果你压测的是一个简单的 GET 查询接口,没有依赖其他服务或接口,TPS ≈ QPS
  • 如果你压测的是一个业务流程,如“提交订单”,包含多个接口(查询商品、库存校验、创建订单、扣减库存等),那么:
    • 1 次事务可能包含 4~5 个请求
    • 这时,TPS < QPS,因为一个事务消耗了多个查询请求。

TPS 与压测工具(JMeter)

在 JMeter 的聚合报告中:

  • Throughput(吞吐量) 就是 TPS 的体现;
  • TPS = 样本数 / 总运行时间(单位秒);
  • 如果你没有使用事务控制器,JMeter 会把每个请求当作一个事务,此时 TPS ≈ QPS。

重要提示:实际生产压测常采用阶梯加压模型(ramp-up),此时 JMeter 的 TPS 均值不再具有参考意义。推荐使用 Grafana + InfluxDB + JMeter 联动来实时分析 TPS 曲线。


实践建议

  • 不要将 QPS 当作系统整体性能指标,因为它只统计查询请求;
  • 建议使用 TPS 来衡量系统性能,你可以根据测试目标定义事务粒度;
  • ✅ 在压测报告中清晰标注“事务定义”,便于后续指标比对与分析;
  • ✅ 配合可视化平台(如 Grafana)进行实时 TPS/QPS 监控,更具参考价值。

总结

指标定义适合场景是否覆盖增删改是否人为可控
TPS每秒事务数接口压测、业务流程评估✅ 是✅ 可
QPS每秒查询数数据库/搜索引擎性能❌ 否❌ 固定查询操作

在系统压测中,TPS 是更推荐的性能指标,可精准反映业务执行能力。而 QPS 更适合用于数据库层的性能观察。

本文由作者按照 CC BY 4.0 进行授权