MySQL是大型架构的核心,下面我详解MySQL到底能抗多少TPS@mikechen
TPS到底是什么
要知道“MySQL到底能抗多少TPS”,你首先,需要了解清楚:TPS到底是什么。
TPS(Transactions Per Second):指的是每秒处理的事务数。

在数据库场景中,通常一次事务可能包含一条或多条SQL,因此TPS并不等同于QPS,但二者常常被混用。
- TPS:每秒事务数;
- QPS:每秒查询数;
如果一个事务里只有一条SQL,那么TPS≈QPS。
如果一个事务里包含多条SQL,那么TPS通常小于QPS。
比如:
一次下单:写入订单表、库存表、流水表,整体成功才算一个事务。
-
扣减商品库存:
UPDATE stock SET num = num - 1 WHERE goods_id = 101; -
生成用户订单:
INSERT INTO orders (order_id, user_id, price) VALUES (...); -
记录流水日志:
INSERT INTO log (action, time) VALUES (...); -
提交事务:
COMMIT;
在这套流程中,对数据库而言: 这一整套操作打包构成 1 个事务。
MySQL能抗多少TPS?
如果对TPS有一定的了解后,我们再来看MySQL究竟能抗多少TPS?

这里,你就需要考虑到MySQL的具体配置,以及MySQL事务场景了。
比如:表结构、索引设计、事务大小,以及硬件配置(CPU、内存、磁盘)…等等。
这里,我给到大家一个大致的参考:
| MySQL服务器规模 | 典型OLTP TPS参考 |
|---|---|
| 4核 / 8GB | 1,000~5,000; |
| 8核 / 16GB | 3,000~10,000; |
| 16核 / 32GB | 5,000~20,000; |
| 32核 / 64GB | 10,000~30,000; |
| 64核及以上 | 20,000~50,000+ |
总之:普通业务中,一台 MySQL 先按 1,000~5,000 TPS 做保守估算。
高规格、优化充分的单机可按 5,000~20,000 TPS 评估;
当稳定写入需求超过 1 万 TPS 时,应开始认真评估。
比如:分库分表、缓存、消息队列、异步化和热点拆分,而不是只考虑升级数据库配置。。