MySQL到底能抗多少TPS(看这篇就够了)

MySQL是大型架构的核心,下面我详解MySQL到底能抗多少TPS@mikechen

TPS到底是什么

要知道“MySQL到底能抗多少TPS”,你首先,需要了解清楚:TPS到底是什么。

TPS(Transactions Per Second):指的是每秒处理的事务数。

MySQL到底能抗多少TPS(看这篇就够了)-mikechen

在数据库场景中,通常一次事务可能包含一条或多条SQL,因此TPS并不等同于QPS,但二者常常被混用。

  • TPS:每秒事务数;
  • QPS:每秒查询数;

如果一个事务里只有一条SQL,那么TPS≈QPS。

如果一个事务里包含多条SQL,那么TPS通常小于QPS。

比如:

一次下单:写入订单表、库存表、流水表,整体成功才算一个事务。

  1. 扣减商品库存: UPDATE stock SET num = num - 1 WHERE goods_id = 101;

  2. 生成用户订单: INSERT INTO orders (order_id, user_id, price) VALUES (...);

  3. 记录流水日志: INSERT INTO log (action, time) VALUES (...);

  4. 提交事务: COMMIT;

在这套流程中,对数据库而言: 这一整套操作打包构成 1 个事务。

 

MySQL能抗多少TPS?

如果对TPS有一定的了解后,我们再来看MySQL究竟能抗多少TPS?

MySQL到底能抗多少TPS(看这篇就够了)-mikechen

这里,你就需要考虑到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 时,应开始认真评估。

比如:分库分表、缓存、消息队列、异步化和热点拆分,而不是只考虑升级数据库配置。。

评论交流
    说说你的看法