• 请不要在回答技术问题时复制粘贴 AI 生成的内容
summertimesad
V2EX  ›  程序员

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

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

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

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

    业务场景如果是因为备份恢复 SLA 扛不住、在线 DDL 风险大、或者热数据 Working Set 超出内存导致离散回表击穿,那该分分、该归档归档,这叫架构治理;
    但如果不看硬件规格和查询场景,纯拿“B+ 树长到 4 层就会性能崩塌”当圣经到处念咒,AI 的回复直接输出本帖
    Supplement 1  ·  1 day ago
    关于 256G 机器“性价比”的:
    这台是公司自建云物理机,前阵子老库故障紧急顶上去的,之前生产环境是 64G 的虚拟机。

    就算是 64G 内存的数据库,4 层的目录页顶多几个 G ,早就全在内存里了,对比 3 层多出来的只是 CPU 几十纳秒的内存寻址而已。

    吐槽的初衷是:现在都什么年代了,系统架构什么都不管,直接奉为圭臬“2000 万行是 B+ 树的性能死线”,让我对抱残守缺的老教条有种无力感。
    Supplement 2  ·  23h 36m ago
    感谢大家的回复,只是有些 V 友的关注点都在 256G 内存上了,是我举例有问题。
    我原本是希望大家讨论 2000 万行的事儿,重点不在内存上啊
    86 replies  •  2026-10-15 09:05:20 +08:00
    liaohongxing
        1
    liaohongxing  
       1 day ago
    256G 内存不现实,大部分就部署在阿里云这类云平台,你看下 256G 内存多少钱?
    OctopusGO
        2
    OctopusGO  
       1 day ago
    是的 我们的高配数据库 单表已经 200G 了 一点问题没有 大概五六亿的数据
    bbao
        3
    bbao  
       1 day ago
    服务器 256G 内存,你花钱买么?哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
    JeffWalker
        4
    JeffWalker  
       1 day ago
    有人知道 256g 的内存要多少钱吗
    wudaye
        5
    wudaye  
       1 day ago   ❤️ 1
    @bbao 去年涨价前 256G 服务器内存也没多少钱
    seedhk
        6
    seedhk  
       1 day ago
    阿里云上,对大公司来说 256g 没什么。对小公司来说,从 2g 升到 8g 都要思考一下
    bbao
        7
    bbao  
       1 day ago
    @wudaye 贵司目前服务器以及 mysql 的配置是怎样的?刚查询阿里云最高 ecs104G ; mysql 高可用型号最高 128G (单价 12.8W/月);其他型号没有超过 64G 的;

    所以你们的 256G 内存是怎么来的?没多少钱是多少钱?
    ntdll
        8
    ntdll  
       1 day ago   ❤️ 1
    @seedhk >> 从 2g 升到 8g 都要思考一下

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

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

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

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

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

    哈哈,被人喷多了,慢慢就学会了。
    sampeng
        64
    sampeng  
       1 day ago via iPhone
    那是,首先要看看业务支撑了,2000 万记录上 256G 的内存数据库。嗯,业务如果几十亿上百亿营收还行,我个人觉得亿级别一下,那就是钱多的没地方花。
    qwer666df
        65
    qwer666df  
       1 day ago
    @pulutom40 #38 T 单位内存 云厂商都没有, 你们公司做的项目难道是类似于 12306 并且是自建数据库吗
    OctopusGO
        66
    OctopusGO  
       1 day ago
    @plasticee #60 是的
    xiaoxiaodong
        67
    xiaoxiaodong  
       23h 2m ago
    @qwer666df 不知道楼上是什么公司,据我所知美团。字节一般都没有 1T 内存的机器,我理解 12306 也不可能上 1T 的内存
    senooo
        68
    senooo  
       22h 48m ago
    @xiaoxiaodong 我们测试服务器内存都是 512GB 的。没错 不要给我纠正是硬盘,是内存
    capric
        69
    capric  
       21h 48m ago
    @xiaoxiaodong 在 2018 年公司服务器都一堆 256G 的了
    qbqbqbqb
        70
    qbqbqbqb  
       21h 34m ago
    @qwer666df 不是所有项目都是全量上云的,很多传统项目,都是自有机房承载核心业务逻辑(什么算核心业务逻辑,主要是涉及重要业务数据处理和持久化的,尤其是持久化部分会特别重视,有些场景下甚至会用独立物理机专门承载数据库服务器,不放进 k8s 等常规业务节点的运维体系里),云上只放特定功能的边缘节点。
    songche
        71
    songche  
       21h 33m ago
    @liaohongxing 我在央子,用的机器还真都是 96 核 256G 内存 40T 存储的机器,用不上面试时候准备的各种调优手段,不过最近新申请机器就不是很容易到达这种配置了。
    kuxuan
        72
    kuxuan  
       21h 31m ago
    我 4G 大的内存小鸡,单表 400 万条,大吗?
    qbqbqbqb
        73
    qbqbqbqb  
       21h 7m ago
    @xiaoxiaodong 不能拿这种大型 toC 互联网产品的方案来解释一切,很多其它类型的项目根本不走互联网的云原生、微服务的逻辑,走的是将原有的巨型单体应用粗粒度模块化拆分+集群化部署的伸缩方式:
    - 集群中的每个业务节点运行完整的单体应用,只是会根据当前服务器角色只运行对应的业务逻辑
    - 数据库也是集中式的,不会根据业务模块拆分不同的库,只做 sharding (通常意义上的分库分表)

    他们会需要这种高配单机。
    alamaya
        74
    alamaya  
       20h 18m ago
    不知道上面的拿什么高可用云服务的东西来说事儿啊,建议了解下自建机房或者自托管的企业,当然还是要有点实力的企业才行。
    国内的 idc 我不了解,不过国外的 idc 比如各位翻墙买的各种 vps ,为了一台机器多切点,单机内存都是 512 起步的,国外有 idc 出租独服的,就去年看到一家 768g 内存的 epyc 做活动的时候月租好像就 700 多刀,没大伙想的那么高不可攀
    tf2
        75
    tf2  
       20h 8m ago
    现在都什么年代了,系统架构什么都不管,直接奉为圭臬“2000 万行是 B+ 树的性能死线”


    因为你拉屎很爽,如果爆慢查询了,擦屁股的是 老架构 啊。
    iyaozhen
        76
    iyaozhen  
       19h 59m ago
    100+GB 内存物理机我还真用过,搭配 SSD 那真的是太顺畅了。也是跑 MySQL ,确实快很多
    martinm
        77
    martinm  
       19h 54m ago via Android
    我司 的 物理服务器,托管在机房,服务器内存 192G ,大家可能习惯云服务器小内存了
    ChovyChu
        78
    ChovyChu  
       19h 49m ago
    借题吐槽一下,其实只要有大数据相关的服务,一般资源(内存)还是非常好深情的。比如以前某甲方石油项目,当时发现 hive 每隔十几天就会重启,导致一些任务异常,排查下来发现 3 个 hive 节点在 3 台物理机上,每台内存没记错应该是 300 个 G 左右,每天内存就会上涨 10 个 G 左右,最后排查出来是一个内存泄漏的问题,实际上根本用不到这么大的内存。
    还有就是某航空公司项目,前期大数据调研的时候申请了一批资源( CPU+内存),结果实际项目上后使用率超级低,于是只能空跑,来把利用率提上去-_-
    seenthewind
        79
    seenthewind  
       19h 21m ago
    看是什么场景吧

    如果是数据仓库之类的,几千万洒洒水,DBA 去处理吧。

    如果是高频的数据库、表,超过一千万我就准备拆了。
    8ejTFevn
        80
    8ejTFevn  
       19h 20m ago
    我们这里几亿数据的表不少
    xiaoxiaodong
        81
    xiaoxiaodong  
       19h 10m ago
    @qbqbqbqb #73 这个也是,好久没有接触过这种项目了 ,受教了
    jischeng
        82
    jischeng  
       18h 23m ago
    在互联网厂商做过一段时间 db 内核/运维,数据库团队一般会有一些大内存版本的服务器(双 numa 机器,单 numa 36cu,500GB 内存,cu:内存约 1:12.5)单机器月成本在 1-2k rmb;
    针对一些自研的数据库,或是存算分离的数据库,大部分类 b+树结构只有 2 层(root page + leaf page),普通的窄表/关系表基本是全部放在内存中。
    内存一般不是瓶颈,更多的压力在计算/吞吐。
    qf19910623
        83
    qf19910623  
       12h 41m ago
    真有钱,我工作十几年,经历过的生产环境最大内存也就 64G
    trzzzz
        84
    trzzzz  
       11h 8m ago
    @qf19910623 #83 之前给电信部署的时候物理机 800GB 内存
    muyiluop
        85
    muyiluop  
       28 mins ago
    回想我 10 年在小公司的开发经历,从未打过这样的富裕的账,我用过的数据库服务器最多也才 32G 内存。还得是大厂啊。关于 2000 万行这个,对于一些记录表,我也是分表的,每月一张表,这样方便进行备份。不过现在数据库原生支持分区了,不分表我估计也没问题,完全是我懒得去研究了,直接分表省事。我之前 1 个多亿记录的表,备份后单表 300GB ,能想象我们 10M 宽带的服务器备份这个到内网的存储来要多久么。唉,还得是大厂,有钱的公司啊,直接云数据库算了。
    muyiluop
        86
    muyiluop  
       22 mins ago
    @senooo 羡慕坏了,从未有过如此富裕过。一直都是小公司和创业公司,测试服务器顶多也只给 16g
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5477 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 257ms · UTC 01:27 · PVG 09:27 · LAX 18:27 · JFK 21:27
    ♥ Do have faith in what you're doing.