QPS、TPS、RPS 详解
1. QPS(Queries Per Second,每秒查询率)
- 定义:系统每秒处理的查询请求数量
- 应用场景:数据库、搜索引擎等查询密集型系统
- 计算公式 :
QPS=总查询量统计时间(秒) \text{QPS} = \frac{\text{总查询量}}{\text{统计时间(秒)}} QPS=统计时间(秒)总查询量 - 示例 :某数据库1分钟处理3600次查询,则:
QPS=360060=60 \text{QPS} = \frac{3600}{60} = 60 QPS=603600=60
2. TPS(Transactions Per Second,每秒事务数)
- 定义:系统每秒完成的事务处理数量
- 核心特征 :
- 事务需满足ACID特性(原子性、一致性、隔离性、持久性)
- 一个事务可能包含多个操作(如数据库的增删改查组合)
- 计算公式 :
TPS=成功事务数统计时间(秒) \text{TPS} = \frac{\text{成功事务数}}{\text{统计时间(秒)}} TPS=统计时间(秒)成功事务数 - 典型场景:支付系统、银行交易等需要事务完整性的场景
3. RPS(Requests Per Second,每秒请求数)
- 定义:服务端每秒接收的客户端请求数量
- 关键特性 :
- 一个请求可能触发多个查询(RPS≤QPS\text{RPS} \leq \text{QPS}RPS≤QPS)
- 与网络层性能强相关
- 计算公式 :
RPS=总请求数统计时间(秒) \text{RPS} = \frac{\text{总请求数}}{\text{统计时间(秒)}} RPS=统计时间(秒)总请求数 - 应用场景:Web服务器、API网关等网络服务
三者的关系与区别
维度 | QPS | TPS | RPS |
---|---|---|---|
度量对象 | 查询操作 | 完整事务 | 网络请求 |
粒度 | 单次操作 | 多操作组合 | 单次请求 |
典型场景 | MySQL查询 | 银行转账 | HTTP请求 |
数值关系 | RPS≤QPS\text{RPS} \leq \text{QPS}RPS≤QPS | TPS≤RPS\text{TPS} \leq \text{RPS}TPS≤RPS | 基础请求量 |
性能优化要点
-
QPS提升:
- 优化索引结构
- 查询语句精简
- 结果缓存机制
-
TPS提升:
- 事务拆分(减小事务粒度)
- 异步提交机制
- 分布式事务优化
-
RPS提升:
- 负载均衡配置
- 连接复用(如HTTP Keep-Alive)
- CDN加速静态资源
注:实际系统中三者常联动使用。例如电商下单场景:1个RPS(HTTP请求)→ 触发3个QPS(库存查询/订单创建/支付)→ 组成1个TPS(完整订单事务)。