Py学习  »  DATABASE

PostgreSQL 越来越火,为什么大多数团队最后还是没放弃 MySQL?

脚本之家 • 1 周前 • 53 次点击  
将 脚本之家 设为“星标
第一时间收到文章更新

这几年后端圈有个现象挺明显的:

一聊数据库,越来越多人开始夸 PostgreSQL。

夸它 JSONB 强、扩展生态丰富、SQL 更标准、向量和时序场景更顺手,甚至不少人会直接给出一句很武断的话:

“PostgreSQL 才是未来,MySQL 早该退场了。”

但如果你真的去看公司里的生产系统,看招聘市场,看大厂存量项目,你又会发现另一个现实:

嘴上吹 PG 的人越来越多,真正把 MySQL 扔掉的团队,其实没有想象中那么多。

这件事表面上看挺矛盾。

可如果你真的做过项目、做过技术选型、踩过线上迁移的坑,你就会明白:

数据库这件事,从来不是一个单纯比参数、比功能、比新旧的题。

它本质上是一道特别典型的工程现实题。

今天我想聊的,不是谁吊打谁。

我更想把这个问题讲透:

PostgreSQL 明明越来越强,为什么 MySQL 还是稳稳地活着?


先说我的结论

如果你只看数据库能力,PostgreSQL 确实越来越像“更先进的那一个”。

但如果你把视角拉到公司、团队、历史系统、迁移代价和生产稳定性,MySQL 仍然是很多组织最现实的选择。

说得再直白一点:

PostgreSQL 赢在技术能力。

MySQL 赢在组织惯性。

而在绝大多数公司里,后者的权重,往往比前者更高。

很多工程师容易把数据库选型看成“谁更强”的比赛。

但真实世界不是这样运转的。

一个系统选数据库,不只是要考虑:

  • • 查询能力强不强
  • • 数据类型丰不丰富
  • • 扩展生态全不全

还要考虑:

  • • 现有团队会不会用
  • • DBA 和运维体系是不是围着它建起来的
  • • 线上有没有一堆历史系统压着
  • • 一旦迁移,谁来承担中间的事故风险

这就是为什么,技术讨论里 PG 经常占上风,但落到公司决策里,MySQL 却经常赢。


PostgreSQL 的强,已经不是“少数人吹出来的强”

先把话说公平。

PG 这几年声量变大,不是因为技术圈跟风,而是它确实越来越能打。

1. 它更像一个“现代数据库”

你只要做过稍微复杂一点的系统,就会发现很多业务根本不是简单 CRUD。

你会遇到:

  • • 半结构化 JSON 数据
  • • 比较重的分析查询
  • • 数组、范围类型
  • • 模糊搜索
  • • 地理空间
  • • 时序
  • • 向量检索

这种场景里,PG 的体验往往会比 MySQL 顺手很多。

它给人的感觉不是“能不能支持”,而是“它一开始就知道你迟早会用到这些能力”。

尤其是在 AI 场景里,PostgreSQL + pgvector 这条路越来越常见,就是一个很典型的信号。

很多项目根本不需要一上来就上专门的向量数据库,用 PG 就能先把事情跑起来。

2. 它的扩展生态真的很强

PG 真正可怕的地方,不只是本身功能强,而是它背后那套扩展生态太完整。

很多团队喜欢它,不是因为“它支持某一个功能”,而是因为:

它像一个数据库平台,而不只是一个数据库内核。

你要向量,有 pgvector

你要时序,有 TimescaleDB

你要 GIS,有 PostGIS

你要全文检索、模糊匹配、分析能力,都能找到成熟扩展。

这意味着很多过去要靠外围系统硬拼起来的能力,现在可以更自然地收进一套体系里。

3. 它对技术团队更有吸引力

这点很关键。

很多工程师喜欢 PG,并不是因为它“更新潮”,而是因为它在很多细节上更接近工程师的审美。

比如:

  • • SQL 标准兼容更好
  • • 功能边界更完整
  • • 扩展方式更开放
  • • 复杂查询能力更有底气

所以如果你做的是新项目,团队技术能力也不错,业务又明显不是那种“永远只有简单表结构”的系统,PG 确实会很有诱惑力。

这不是吹。

这是它真实的竞争力。


但 MySQL 真正的壁垒,从来不是“功能也很强”

如果你把 MySQL 看成一个“功能稍弱的旧数据库”,那你就看错重点了。

MySQL 最厉害的地方,不是它某一个参数多亮眼,而是它背后已经沉淀成了一整套工业惯性。

1. 太多系统,是围着 MySQL 长大的

一家公司用了十年 MySQL,真正难替代的往往已经不是数据库本身,而是围绕它形成的一切:

  • • 运维流程
  • • DBA 经验
  • • 主从切换方案
  • • 监控体系
  • • 慢查询分析平台
  • • 备份恢复脚本
  • • 故障排查 SOP

这些东西平时不显山露水,但一到线上出事,就是最值钱的资产。

很多人喜欢把这叫“历史包袱”。

我不太认同。

因为它本质上不是包袱,而是企业已经付出时间和成本换来的稳定性。

你让公司迁去 PG,本质上不是换个数据库,而是把这套长期积累下来的生产经验,重新建立一遍。

这个代价,不是很多技术讨论里一句“PG 更好”能抹平的。

2. MySQL 的人才池太大了

这一点非常现实,也非常重要。

数据库选型这件事,最后一定会落到人身上。

你今天要招人:

  • • 会 MySQL 的开发更多
  • • 会 MySQL 的 DBA 更多
  • • 遇到 MySQL 故障能快速找到经验的人更多
  • • 社区里的现成方案和排障案例也更多

这意味着什么?

意味着 MySQL 的组织下限很高。

你不一定把它玩到最极致,但绝大多数团队都能把它稳定用到一个还不错的水平。

而 PG 的问题在于,它的上限可能更高,但很多组织未必接得住它带来的学习和迁移成本。

3. 很多系统根本没有迁移的商业价值

这一点我觉得最容易被忽略。

技术人喜欢问:

“既然 PG 更强,为什么不迁?”

但公司真正会问的是:

“迁完之后,我能多赚多少钱,还是少出多少事?”

如果你的 MySQL 系统现在跑得很稳,吞吐也够,团队也熟,线上事故也可控,那数据库迁移这件事,很可能就没有足够强的业务收益。

反过来,它却一定有很清晰的成本:

  • • SQL 方言兼容问题
  • • ORM 细节差异
  • • 复杂查询和存储过程迁移
  • • 双写和回滚方案
  • • 数据一致性校验
  • • 中间期稳定性风险

很多团队不是不知道 PG 更现代,而是看完这张账单之后,发现这件事不值得。

所以你要理解:

MySQL 没被替代,不是因为大家不懂技术,而是因为很多系统根本没有“非换不可”的理由。


你以为大家在选数据库,其实大家在选风险

我越来越觉得,很多技术选型问题,表面上是在选技术,实际上是在选风险。

数据库尤其如此。

你选 PostgreSQL,通常是在为未来能力买单。

你选 MySQL,很多时候是在为当前稳定性买单。

两者都不天然正确。

关键在于你的场景是哪一种。

如果你是一个新项目,而且业务复杂度高、团队能力也足够,PG 当然值得优先考虑。

因为它能让你未来少走很多弯路。

但如果你手里是一个跑了 8 年的 MySQL 系统,业务逻辑复杂、依赖深、团队又对 MySQL 非常熟,那继续用 MySQL,很多时候反而是最成熟的决定。

这不是保守。

这叫理性。


如果让我来定规则,我会这么选

数据库选型这件事,我一般不会上来就问“谁更强”。

我会先问下面这几个问题。

1. 新项目,还是老系统?

如果是新项目,没有历史包袱,那就应该把未来能力考虑进去。

这种情况下,如果业务可能会走向:

  • • 复杂查询
  • • JSON/半结构化数据
  • • 分析型需求
  • • AI/向量能力

那 PG 是很值得优先考虑的。

但如果是存量系统,判断逻辑完全不同。

这时候不是“谁更强”,而是谁更值得动。

2. 业务复杂度到底有多高?

很多人讨论数据库,容易高估未来复杂度,低估现实需求。

如果你的系统核心就是典型 Java 后端:

  • • 用户
  • • 订单
  • • 商品
  • • 库存
  • • 简单事务
  • • 常规分页

那 MySQL 和 PG 的差距,在很多日常业务里并不会像想象中那么夸张。

但如果你的系统天然需要:

  • • 很多复杂筛选和组合查询
  • • 大量 JSON 结构化检索
  • • 更丰富的数据类型支持
  • • 更灵活的扩展能力

那 PG 的价值就会越来越明显。

3. 团队有没有能力吃下新系统?

这一点我特别看重。

技术选型最怕的不是选错,而是选了一个理论上更好、实际上团队根本驾驭不了的东西。

很多架构事故,不是因为底层技术差,而是因为组织能力没跟上。

所以别只问数据库本身牛不牛。

还要问:

你们团队,配不配得上它。

4. 你现在最需要的是未来,还是确定性?

这是一个特别好的判断题。

如果你最需要的是未来能力,那 PG 值得押。

如果你最需要的是确定性,那 MySQL 仍然是一个非常强的现实选择。


最后说一句

技术圈特别喜欢做一种简单粗暴的判断:

谁更先进,谁就该赢。

但真正做过系统的人都知道,现实不是这样。

PostgreSQL 这几年越来越火,是因为它真的越来越强。

MySQL 到现在还没被淘汰,是因为它在真实世界里依然有巨大的组织价值。

这两件事一点都不冲突。

所以别把数据库选型理解成“站队”。

它根本不是信仰问题。

它是一个非常冷静、非常现实、非常工程化的问题。

如果你非让我用一句话概括,那我还是那句:

PostgreSQL 是更好的工程选择,MySQL 是更稳的组织选择。

什么时候选哪个,不看情绪,看场景。


如果你今天从 0 启一个新的 Java 项目,你会选 PostgreSQL,还是继续用 MySQL?欢迎评论区聊聊。

END

图片
  推荐阅读:
  1. 截胡苹果,安卓要先用上屏下Face ID了
  2. 你写的每一行代码,都在重复他80年前的一个偷懒决定
  3. 被AI抢走工作的人,在忙什么?
  4. 这个法国老哥写的C代码,把全世界程序员都干沉默了
  5. 面试官:你抗压能力怎么样? 我:很强 面试官:举例说说 我:能扛住产品经理三天改七次需求。。。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/196155