为什么国内公司都选 PostgreSQL,而不是 MySQL?

0 阅读4分钟

沉默是金,总会发光

大家好,我是沉默

在信创推进、数据库自主可控的大背景下,一个现象越来越明显:

国产数据库的“技术母本”,正在从 MySQL,全面转向 PostgreSQL。

你会发现:

  • 腾讯云 TDSQL PG(TBase)
  • 阿里云 PolarDB for PostgreSQL
  • 华为云 GaussDB / openGauss
  • 易景数通 openHalo

它们无一例外,都选择了 PostgreSQL 作为底层内核。

问题来了:

MySQL 明明更流行、更成熟、更“好用”,
那为什么真正做数据库的大厂,反而不选它?

答案很简单
不是 MySQL 不够好,而是它有“天花板”。

而 PostgreSQL,恰好踩在了这些天花板的另一侧。

**-**01-

国产数据库都在 PostgreSQL 上“深度定制”

先看几个代表性方案,你就能感受到差异:

1. 腾讯云 TDSQL PG(TBase)

  • 基于 PostgreSQL 深度改造
  • 引入 GTM 全局事务管理器
  • 支持 跨 shard 分布式事务

这是 MySQL 原生架构很难优雅解决的问题。

2. 阿里云 PolarDB for PostgreSQL

  • 重构存储层
  • 实现 一写多读 + 共享存储
  • 秒级扩容只读节点

不是“主从复制”,而是云原生数据库形态

3. 华为云 GaussDB / openGauss

  • 兼容 PostgreSQL 生态
  • 引入 列存储
  • 支持 HTAP(OLTP + OLAP)
  • 内置 AI 优化器

PostgreSQL 成为“可演进内核”。

4. openHalo(易景数通)

  • 面向分布式场景
  • 基于 PostgreSQL 扩展能力构建

核心不是“改 SQL”,而是改数据库边界

图片

- 02-

为什么不是 MySQL?

接下来我们说点“得罪人的实话”。

1. MySQL 的数据类型,真的不够用

在简单业务中,MySQL 很好。

但在复杂系统建模上,它会让你写出一堆“很丑的表”。

而 PostgreSQL:

  • ARRAY:一个字段存多个值
  • RANGE:时间区间、价格区间天生支持
  • 复合类型:直接映射现实世界对象
  • JSONB:可索引、可更新、可高效查询

一句话:

PostgreSQL 是“面向业务建模”的数据库,
MySQL 更像“面向表结构”的数据库。

2. MySQL 没有“真正的序列(Sequence)”

很多人不知道:

MySQL 到现在,都没有独立的序列对象。

PostgreSQL 可以这样:

CREATE SEQUENCE order_seq START1;
INSERT INTO orders(id) VALUES (nextval('order_seq'));

而 MySQL:

  • 只能依赖 AUTO_INCREMENT
  • 必须绑定表
  • 不能跨表共享
  • 分布式场景下要额外引入 Redis / Snowflake

这在金融、订单、分布式事务里,是实打实的工程成本。

3. MySQL 的扩展生态,太弱了

PostgreSQL 被称为:

“可编程数据库”

不是吹的。

你可以直接装:

  • TimescaleDB → 时序数据库
  • Citus → 分布式数据库
  • pg_trgm → 相似度搜索
  • pg_stat_statements → SQL 级性能监控

而 MySQL:

  • 插件少
  • 能力割裂
  • 很多功能只能“数据库外解决”

4. MySQL 的性能诊断,成本极高

MySQL 排查问题,往往是:

  • slow log
  • Performance Schema
  • SHOW PROCESSLIST
  • 靠经验 + 运气

PostgreSQL 则是:

  • pg_stat_activity
  • pg_stat_statements
  • pg_locks
  • EXPLAIN ANALYZE

所见即所得,定位成本低一个量级。

5. 复制机制:MySQL 更像“备份”,PG 更像“高可用”

MySQL:

  • 默认 异步复制
  • 主挂了,从可能丢数据
  • 半同步要额外配置
  • GTID 容易踩坑

PostgreSQL:

  • WAL 日志机制
  • 支持 同步复制
  • 主库可等待备库确认再提交
  • 理论上 零数据丢失

一句话:

MySQL 的复制偏“容灾”,
PostgreSQL 的复制是“架构能力”。

6. MySQL 的“开源”,并不彻底

这是很多人忽略的一点。

维度MySQLPostgreSQL
许可证GPL + 商业BSD-like
控制方Oracle社区
企业版有功能差异无阉割
技术路线商业驱动技术驱动

PostgreSQL 是:

真正意义上的“社区主导型开源数据库”。

7. MVCC 实现,决定了并发模型的上限

PostgreSQL:

  • 每行多版本
  • 读写彻底隔离
  • 支持更高级的隔离级别

MySQL(InnoDB):

  • 依赖 undo log
  • 长事务容易膨胀
  • 并发复杂度更高

这也是为什么:

金融、交易、复杂并发系统,更偏爱 PostgreSQL。

图片

- 03-

那 MySQL 就不行了吗?

MySQL 依然是 Web 场景的王者。

它的优势也非常明确:

  1. 部署极简
  2. 读性能强
  3. Web 生态成熟
  4. 云厂商深度优化
  5. 社区资源极其丰富

对于 读多写少、快速上线的业务,MySQL 依然是最优解。

图片

**-****04-**总结

不是“谁更好”,而是“谁更适合”

如果你问我一句总结:

MySQL 是效率型数据库,
PostgreSQL 是演进型数据库。

国产数据库选择 PostgreSQL,本质上是在选择:

  • 更长的技术生命周期
  • 更大的架构演进空间
  • 更少的隐性天花板

而这条路,已经被腾讯、阿里、华为同时验证过了。

图片

**-****05-**粉丝福利

我这里创建一个程序员成长&副业交流群, 


 和一群志同道合的小伙伴,一起聚焦自身发展, 

可以聊:


技术成长与职业规划,分享路线图、面试经验和效率工具, 




探讨多种副业变现路径,从写作课程到私活接单, 




主题活动、打卡挑战和项目组队,让志同道合的伙伴互帮互助、共同进步。 




如果你对这个特别的群,感兴趣的, 
可以加一下, 微信通过后会拉你入群, 
 但是任何人在群里打任何广告,都会被我T掉。