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

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

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

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

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

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

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

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

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

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

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

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

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

    大部分情况堆硬件就能解决,最快的方式
    superjojo
        50
    superjojo  
       10h 42m ago
    我一个 8G 服务器,自建的 mysql ,占了 3.4G 左右,都单表一千多万了,正常运行,我是移动端出身,后端随便糊的。
    alamaya
        51
    alamaya  
       10h 39m ago
    不知道为啥上面这么多人对 256g 内存这么应激的,也就这几年内存贵了,前几年 1t 内存都稀松平常
    felixcode
        52
    felixcode  
    PRO
       10h 34m ago
    20 年前学的东西指望用到退休呢
    hutoer
        53
    hutoer  
       10h 18m ago   ❤️ 1
    @alamaya 前几年给一些甲方(国企)配过服务器,256G 内存服务器,他们都开会了好几次。服务器内存比台机贵好几倍,不便宜的。不是所有的企业都是阿里、华为这种不差钱的主。而且前几年,服务器内存一般单条是 16G ,1T 要 64 条了,哪里会稀松平常。
    displayabc
        54
    displayabc  
       8h 43m ago
    @bbao #7
    xiuming
        55
    xiuming  
       8h 35m ago
    4 层 对 SSD 来说压力还好吧 不像以前 HDD 时代
    diudiuu
        56
    diudiuu  
       8h 24m ago   ❤️ 1
    @pulutom40 #46 长这么大了,最多一次一次性启动 8 台 8h16g 的数据库,读写分离,也就是开了一周,就又自动退回去了,你确定是内存?
    JasonYip
        57
    JasonYip  
       8h 15m ago
    有的单位自己部署的云主机确实一台就是内存 256GB-1TB 都有的
    heimoshuiyu
        58
    heimoshuiyu  
       7h 20m ago
    600 块一根 ddr4 ecc 32G 内存,256G 也就 4800
    为啥数据库服务器非得上云,一年的租金都够买几十套这配置了
    weiqipeng
        59
    weiqipeng  
       7h 13m ago via iPhone
    plasticee
        60
    plasticee  
       5h 54m ago
    @OctopusGO 单表 200G ,是 mysql 数据库?
    plasticee
        61
    plasticee  
       5h 51m ago
    @nunterr 用的是 mysql 数据库?
    kkwa56188
        62
    kkwa56188  
       5h 42m ago
    都 2026 年了, OP 思维还停留在经济上行期吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1269 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 115ms · UTC 23:44 · PVG 07:44 · LAX 16:44 · JFK 19:44
    ♥ Do have faith in what you're doing.