先解释这两个术语的具体意思:
QPS - Queries-per-second 每秒查询数
TPS - Transaction-per-second 每秒事务数
很多人将上面两个概念理解成相同的意思,让我很困惑,查了很多文章大体都是一个意思。如果是它们没有区别,那对同一事物作出两个不一样的解释,这种逻辑不符合常理,必定有其细分的地方。
所以我理解的QPS和TPS是这样的:
先举个例子, 我们从网上下载文件、上传文件都是向服务器发起请求以及得到响应,过程都是一样,没有区别,但它们本质上一个是向服务器索取资源,另一个是向服务器提交资源,是两种类别的操作。好比,我上淘宝买东西,首先查看商品(向服务器下载商品图片、商品描述等内容),觉得不错就进详情页下单,我把下单需要的收货地址、收货人、手机号等信息填写好,再提交订单信息,这时服务器接收我提交的信息,然后给我响应是否成功,到这结束。
因此,将QPS、TPS分别对应程序的四个操作:增、删、改、查。QPS 对应“查”;TPS 对应“增、删、改”;在select 查询的时候,一般不需要事务,事务的提交、回滚对select 来说是无效的,只有“增、删、改”需要事务保证数据的一致性,就像提交订单信息,服务器处理数据都会加上事务,而查看商品就不需要了。
个人理解,衡量系统吞吐量的要素之一的TPS ,说的就是服务器对“增、删、改”这类操作的处理能力;QPS 就是服务器对“查”操作的处理能力。