迁移大潮的谎言:为什么 PostgreSQL 可能拖垮你的预算

由 John Doe 十一月 10, 2026

开门见山说清楚:把整套技术栈都迁移到 PostgreSQL 并不是什么万能银弹,它是一颗财务地雷。

目录

作者:Oz

image

过去几年,科技行业掀起了一股声势浩大的迁移浪潮。受够了 Oracle 的授权勒索、MySQL 的扩容痛点,或是老式 NoSQL 混乱的无模式架构,工程团队正争先恐后地把所有业务都往 PostgreSQL 上迁。主流观点认为,PostgreSQL 是终极的、面向未来的安全避风港。

但这场 “大迁移” 有其阴暗面,而云厂商和数据库即服务(DBaaS)供应商巴不得大家永远别讨论这件事。当你把 PostgreSQL 默认当成所有规模化负载的归宿时,你制造的不只是架构瓶颈,更是在亲手消耗掉初创公司的生存现金流。

关于硬让单体关系型数据库承载海量现代云负载,为何最终会吸干你的基础设施预算,下面是直白且不容回避的真相。


云 IOPS 税:为 MVCC 膨胀买单

为了运维简便,大多数团队都会在 Amazon RDS、Aurora 或 Google Cloud SQL 这类托管服务上部署 PostgreSQL。这些平台不止按存储与算力收费,还会按每秒输入输出操作数(IOPS)计费。

受 PostgreSQL 多版本并发控制(MVCC)架构的影响,UPDATE操作不会原地覆盖数据,而是向磁盘写入一整行新数据,旧行则留给垃圾回收进程后续清理。

当你把高频高写入负载(比如会话管理、实时遥测、频繁状态更新)迁到托管 PostgreSQL 上时,会产生数以百万计的死亡元组。每一次新写入,以及自动清理(autovacuum)进程回收垃圾时产生的每一次磁盘读取,都会消耗云 IOPS 额度。

最终你要向云厂商支付巨额费用,仅仅是为了支撑数据库内部的垃圾回收机制。你的月度 AWS 账单会暴涨,原因不是你服务了更多客户,而是你在为 PostgreSQL 的 写放大税 买单。

垂直扩容的 “绑架”

现代云原生应用采用水平扩容模式:启动 50 个低成本的通用应用容器,流量下降时就随时缩容。

原生 PostgreSQL 开箱并不支持水平扩容,它从底层设计上就是面向垂直扩容的。

当数据库成为性能瓶颈时,你唯一能立刻做的,就是一路拉高硬件规格。从标准实例升到内存优化实例,再升级到数 TB 内存的巨型实例。云数据库实例的定价并非线性增长,而是指数级攀升。你会被迫采购最昂贵的顶级硬件配置,只为了把峰值时段的 CPU 使用率压在 80% 以下。

你会被垂直扩容牢牢绑定,每月要为大量闲置算力支付上万美元,因为单体 PostgreSQL 实例无法在流量低谷时动态缩容。

隐形的运维人力成本

“用托管 PostgreSQL 就等于零运维”,是这场风潮里最大的谎言。

当数据库规模增长到几百 GB 以上,单体架构的裂痕就会开始显现。你会撞上连接数上限,不得不安排团队部署、配置、监控一整套 PgBouncer 集群;事务 ID 会面临回卷风险(Transaction ID Wraparound),不得不开启紧急维护窗口;自动清理进程会卡住,需要手动调优autovacuum_vacuum_cost_limit这类生僻参数。

这一切都需要高度专业的数据库管理员。如果没有专职 DBA,你的资深后端工程师(本应去开发创造营收的功能)就要把 30% 的迭代时间花在处理数据库故障上。

PostgreSQL 在规模化下的真实成本,远不止云服务账单;还有几十万、上百万美元的工程师薪资,耗在了维持系统运转的救火工作上。

扩展的虚假经济性

为了省下专用基础设施的费用,团队会安装各类扩展,硬让 PostgreSQL 去做它原生并不擅长的事。要时序数据?装 TimescaleDB。要向量搜索?装 pgvector。要分布式查询?装 Citus。

这些扩展本身都是工程杰作,但它们会带来严重的运维复杂度。

  • 很多托管云厂商会限制可用扩展的种类,或是运行过时版本,造成厂商锁定。
  • 当你依赖 5 个核心扩展时,升级 PostgreSQL 主版本会变成一场风险极高、耗时数周的迁移工程。
  • 当通过扩展运行的重型分析查询占满共享缓冲区时,核心事务的延迟就会飙升,平台上所有用户的使用体验都会下降。

本想把所有东西塞进一个数据库来省钱,最后却搭出了脆弱、高度耦合的单体系统,后续拆解的成本会指数级上升。


务实的结论

PostgreSQL 是一款极其出色的软件。如果你启动新项目,它完全应该作为你的主力关系型数据存储。

但 “把所有东西都放进 PostgreSQL” 的迁移策略,根本算不上架构设计,它是一笔财务负债。

  • 别把高吞吐事件流迁进 PostgreSQL。
  • 别把海量分析日志迁进 PostgreSQL。
  • 别把短生命周期的缓存层迁进 PostgreSQL。

从你开始扩容的第一天起,就采用 多语言持久化 架构。把特定负载分流到 NoSQL、列式数据库或是消息中间件,这些产品就是为这些场景设计的,成本模型也与之匹配。守护好你的核心事务数据库,也守护好你的公司现金流。

你认为哪起知名的工程故障或是云账单噩梦,最适合作为本文的核心案例?

参考

The Great Migration Lie: Why PostgreSQL Might Bankrupt You