QPS(Queries Per Second) 和 TPS(Transactions Per Second)的区别
QPS(Queries Per Second) 和 TPS(Transactions Per Second) 是衡量系统性能的两个关键指标,但它们的关注点和应用场景有所不同:
1. 定义与核心区别
指标 | 全称 | 含义 | 适用场景 |
---|---|---|---|
QPS | Queries Per Second | 每秒查询次数,表示系统每秒能处理的请求数量(无论是否完整业务逻辑)。 | 适用于接口、API、数据库查询等场景。 |
TPS | Transactions Per Second | 每秒事务数,表示系统每秒能完成的完整事务数量(需满足ACID特性)。 | 适用于数据库、支付、订单等业务系统。 |
- 关键区别:
- QPS 统计的是所有请求(例如HTTP请求、SQL查询),可能包含非事务性操作(如静态资源请求)。
- TPS 仅统计完整事务(例如一次支付包含“扣款+记录流水+通知商户”多个步骤,整体算1次TPS)。
2. 计算方式对比
-
QPS公式:
QPS=总请求量时间(秒)QPS =总请求量/时间(秒)示例:某API 1分钟处理12万次请求 → QPS = 120,000 / 60 = 2,000。
-
TPS公式:
TPS=成功的事务数时间(秒)TPS =成功的事务数 / 时间(秒)示例:支付系统1小时处理3.6万笔订单 → TPS = 36,000 / 3,600 = 10。
3. 典型场景示例
-
高QPS低TPS:
- 场景:新闻网站首页(大量用户刷新页面,但无复杂事务)。
- 数据:QPS=10,000(静态请求),TPS≈0(无数据库写入)。
-
低QPS高TPS:
- 场景:银行转账(单次请求触发多步骤事务)。
- 数据:QPS=100(HTTP请求),TPS=80(每秒完成80笔转账)。
4. 性能优化侧重点
指标 | 优化方向 |
---|---|
QPS | - 减少单次请求耗时(缓存、CDN) - 水平扩展(负载均衡) - 异步化处理。 |
TPS | - 减少事务锁竞争 - 数据库分库分表 - 保证ACID的同时提高并发(如MVCC)。 |
5. 关联性与扩展
- 关系:TPS ≤ QPS(一次事务可能包含多个查询,例如电商下单涉及“查库存+扣减+生成订单”)。
- 扩展指标:
- RT(Response Time):单次请求耗时,影响QPS/TPS上限(QPS = 并发数 / RT)。
- 并发数:系统同时处理的请求数,与QPS/TPS呈正相关。
总结:QPS反映系统吞吐量,TPS体现业务处理能力。实际应用中需结合两者分析,例如“QPS高但TPS低”可能提示无效请求过多或事务设计不合理。