2026 年了,还有老架构坚持 MySQL 单表数据不能超过 2000 万行

summertimesad 2026-10-13 14:05 1

问他为什么,张口闭口就是:“单表过 2000 万,B+ 树就从 3 层变成 4 层了,多一层就多一次磁盘 I/O ,多的我不想说了 你自己问 AI”

我寻思现在生产环境服务器 256G 内存,给 Buffer Pool 分 200G 。

Buffer Pool 看着 200G 空间表示:“我管你这那的,非叶子节点全都给我常驻内存!多出来的一层不过是几十纳秒的内存二分查找,哪来的这么多废话”

业务场景如果是因为备份恢复 SLA 扛不住、在线 DDL 风险大、或者热数据 Working Set 超出内存导致离散回表击穿,那该分分、该归档归档,这叫架构治理;
但如果不看硬件规格和查询场景,纯拿“B+ 树长到 4 层就会性能崩塌”当圣经到处念咒,AI 的回复直接输出本帖
最新回复 (65)
  • liaohongxing 10-13 14:28
    1楼
    256G 内存不现实,大部分就部署在阿里云这类云平台,你看下 256G 内存多少钱?
  • OctopusGO 10-13 14:29
    2楼
    是的 我们的高配数据库 单表已经 200G 了 一点问题没有 大概五六亿的数据
  • bbao 10-13 14:31
    3楼
    服务器 256G 内存,你花钱买么?哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
  • JeffWalker 10-13 14:33
    4楼
    有人知道 256g 的内存要多少钱吗
  • wudaye 10-13 14:35
    5楼
    @bbao 去年涨价前 256G 服务器内存也没多少钱
  • seedhk 10-13 14:39
    6楼
    阿里云上,对大公司来说 256g 没什么。对小公司来说,从 2g 升到 8g 都要思考一下
  • bbao 10-13 14:47
    7楼
    @wudaye 贵司目前服务器以及 mysql 的配置是怎样的?刚查询阿里云最高 ecs104G ; mysql 高可用型号最高 128G (单价 12.8W/月);其他型号没有超过 64G 的;

    所以你们的 256G 内存是怎么来的?没多少钱是多少钱?
  • ntdll 10-13 14:49
    8楼
    @seedhk >> 从 2g 升到 8g 都要思考一下

    这可能是真的有点小了,家庭作坊,出来做生意也不至于差一个月这几百块钱的差价。
  • 526457385 10-13 14:56
    9楼
    你给他整一个超过 2000w 的表并且没有什么问题的 甩过去就行了,其他废话不要多说
  • tutusolo 10-13 15:11
    10楼
    你要不要先想想你在说什么,256g 内存的服务器去解决 mysql 单表 2000 万的问题,你可真是人才。
  • gfreezy 10-13 15:13
    11楼
    一般云厂商都有物理机的,1T 内存都有
  • nunterr 10-13 15:15
    12楼
    我们公司的一个订单表单表数据已经快 2 亿了,还改不了😂,就这样持续增加中,系统还很稳定
  • azkaban 10-13 15:23
    13楼
    你用这个钱用啥都行啊,直接云厂商的商用数据库,全进内存都行
  • maocat 10-13 15:29
    14楼
    你想尽办法优化的 SQL 不如给服务器的磁盘换成 SSD
  • JYii 10-13 15:35
    15楼
    @ntdll #8 集团利润高的时候,你想升级什么都是一路畅通。这两年再提 OA ,部门领导就给退回了,理由是经费不足
  • fionasit007 10-13 15:37
    16楼
    @ntdll #8 我们公司产品日活百万,但是服务器数据库大多数都是 1h1g 的,少数撑死 8h8g ,不过我们产品主要是客户端功能居多,服务器交互少,很多服务我们都是 1h1g 起步不够在加
  • adoal 10-13 15:39
    17楼
    OP 有一种经济上行期的美感
  • winnerczwx 10-13 15:42
    18楼
    @JYii 一个月几百块钱经费都不足可以直接申请破产了吧, 2g 升 8g 一个月可能都用不到几百块
  • refear99 10-13 15:44
    19楼
    阿里云 polarDB 和类似产品,单表 20 亿都不是问题
  • cslive 10-13 15:51
    20楼
    现在都是集群,没有单机了
  • ShinichiYao 10-13 15:55
    21楼
    看了一眼,1 亿多点吧,内存 8G
  • Sezxy 10-13 15:56
    22楼
    我寻思之力发动
  • Zhuzhuchenyan 10-13 15:57
    23楼
    这个论断在现在的硬件平台确实不适用了
    从存储的角度来说,自从我们托管的机器换了 NVME ,面对 10000 倍性能提升的 4K 随机读,和 1000 倍性能提升的 4K 随机写,感受到的差异是巨大的
  • JYii 10-13 16:08
    24楼
    @winnerczwx #18 有没有可能不是一台,1 主 N 从。还有没有可能下个季度部门预算已经花完了。

    问题的点不在于几百块还是几千几万,是当下"开源节流"
  • junkk 10-13 16:18
    25楼
    检测不能超过不重要,但机器性能有限的情况下,2kw 确实是一道坎,当然可能也不一定,不过八股文答案就是这个,别人问了你说加钱加机器,那很可能就挂了
  • OctopusGO 10-13 16:20
    26楼
    @nunterr 这才哪到那 我们都快十亿了
  • skuuhui 10-13 16:33
    27楼
    我更建议你自己问一下 ai
  • cvbnt 10-13 16:53
    28楼
    实际 B+树高度可以通过工具或 page 分析看,索引合理+Buffer Pool 够用+查询写法正确,2000 万远远不是上限
  • lxc404 10-13 16:53
    29楼
    反驳不能超过 2000 万行的理由可以有很多,但不该是 256G 内存
    你们生产服 mysql 就一个节点?不做灾备?十几台机器都给升到 256G 就为了单表超过 2000w?
  • selfly 10-13 16:55
    30楼
    @OctopusGO mysql 单表十亿?有对接前端精确查及分页查功能吗,如果有且速度在 ms 级确实牛,如果只是做历史库没啥参考性
  • OctopusGO 10-13 17:00
    31楼
    @selfly 有精确查找 但是都有时间范围的查询 分业也都有时间范围 而且做了分区
  • kandaakihito 10-13 17:10
    32楼
    看具体的表结构和业务吧,之前见过最牛逼的一种玩法:弄个字段存 json ,json 还贼大,然后每次查询都是全表加载 json 到内存搜索

    磁盘都给擦出火星子了
  • MoozLee 10-13 17:41
    33楼
    加钱能解决 99%的业务问题,但是最大的问题是不能加钱啊
  • XProxyAi 10-13 18:09
    34楼
    你这个是政治问题,不是技术问题,关键是话语权掌握在谁手里,2000 万这个东西就是一个经验值,根据不同情况肯定是有变化的,但是你挡不住 话语权掌握在老古董跟傻逼手里
  • lscho 10-13 18:12
    35楼
    2026 还有坚持用 mysql 的呢
  • alsas 10-13 18:28
    36楼
    有一种经济上行期的天真
  • 8355 10-13 18:28
    37楼
    20 亿
  • pulutom40 10-13 19:22
    38楼
    好奇楼上都是些什么公司,做的都是些什么项目?数据库 256G 内存难道很高吗?

    数据库的内存,不都是用 T 做单位的吗?单机 256G 不就常规水平吗?
  • lujiaosama 10-13 19:32
    39楼
    @pulutom40 几十 W 的小破项目,你想上 256G 的内存,甲方都得嘀咕半天。给你上个 32G,64G 就不错了。
  • JacakSweet 10-13 19:35
    40楼
    有个表 6 亿数据了
  • cccssss 10-13 19:35
    41楼
    @pulutom40 你最好说的是内存,不是硬盘
  • momo1pm 10-13 19:51
    42楼
    @pulutom40 公司预算就算没问题,也不会为了某个开发某个无关紧要需求去多花钱
  • opengps 10-13 19:55
    43楼
    建议实测后再出结论,因为实际业务上反正要分表了,不如多分几个效果好,所以定一个数值不要单表超过,这并不是否认
  • FlashEcho 10-13 19:59
    44楼
    不知道为什么大家都觉得数据库实例节点服务器配 256G 内存很少见,这种规格的机器已经非常普遍啊
  • opengps 10-13 20:17
    45楼
    @FlashEcho #44 为了避免各种单点瓶颈,早就拆分成多台低配集群方案了
  • pulutom40 10-13 20:20
    46楼
    @cccssss 是内存啊。数据库这种系统,内存直接影响核心性能,核心业务都是直接拉满的。
  • pulutom40 10-13 20:26
    47楼
    楼主的说法我是认同的,现在的硬件和以前完全不一样了。nvme 固态+高内存服务器,2000w 数据都不够热身的。而且就算单表膨胀上天了,现在也有很多业务无感的解决方案。死守 2000w 这种傻逼值,纯属八股文背多了。
  • nrtEBH 10-13 20:29
    48楼
    这种人被裁员了是一点都不冤的
  • xenme 10-13 20:36
    49楼
    20 亿的表,512G 内存很常见,前段时间有一个短时间扩到了 192 核/1.5T 内存( aws r7i.48xlarge )

    大部分情况堆硬件就能解决,最快的方式
  • superjojo 10-13 21:02
    50楼
    我一个 8G 服务器,自建的 mysql ,占了 3.4G 左右,都单表一千多万了,正常运行,我是移动端出身,后端随便糊的。
  • alamaya 10-13 21:05
    51楼
    不知道为啥上面这么多人对 256g 内存这么应激的,也就这几年内存贵了,前几年 1t 内存都稀松平常
  • felixcode 10-13 21:10
    52楼
    20 年前学的东西指望用到退休呢
  • hutoer 10-13 21:26
    53楼
    @alamaya 前几年给一些甲方(国企)配过服务器,256G 内存服务器,他们都开会了好几次。服务器内存比台机贵好几倍,不便宜的。不是所有的企业都是阿里、华为这种不差钱的主。而且前几年,服务器内存一般单条是 16G ,1T 要 64 条了,哪里会稀松平常。
  • displayabc 10-13 23:01
    54楼
    @bbao #7
  • xiuming 10-13 23:09
    55楼
    4 层 对 SSD 来说压力还好吧 不像以前 HDD 时代
  • diudiuu 10-13 23:20
    56楼
    @pulutom40 #46 长这么大了,最多一次一次性启动 8 台 8h16g 的数据库,读写分离,也就是开了一周,就又自动退回去了,你确定是内存?
  • JasonYip 10-13 23:29
    57楼
    有的单位自己部署的云主机确实一台就是内存 256GB-1TB 都有的
  • heimoshuiyu 10-14 00:24
    58楼
    600 块一根 ddr4 ecc 32G 内存,256G 也就 4800
    为啥数据库服务器非得上云,一年的租金都够买几十套这配置了
  • weiqipeng 10-14 00:31
    59楼
    @displayabc 6666
  • plasticee 10-14 01:49
    60楼
    @OctopusGO 单表 200G ,是 mysql 数据库?
  • plasticee 10-14 01:52
    61楼
    @nunterr 用的是 mysql 数据库?
  • kkwa56188 10-14 02:02
    62楼
    都 2026 年了, OP 思维还停留在经济上行期吗?
  • luojiedev 10-14 08:17
    63楼
    @tutusolo op 应该只是用这个举例,跟我一样不太会表达。

    哈哈,被人喷多了,慢慢就学会了。
  • sampeng 10-14 08:27
    64楼
    那是,首先要看看业务支撑了,2000 万记录上 256G 的内存数据库。嗯,业务如果几十亿上百亿营收还行,我个人觉得亿级别一下,那就是钱多的没地方花。
  • qwer666df 10-14 08:56
    65楼
    @pulutom40 #38 T 单位内存 云厂商都没有, 你们公司做的项目难道是类似于 12306 并且是自建数据库吗
* 帖子来源V2EX
返回