中间件速查手册
Compare · 3 个对象

MySQL vs PostgreSQL vs Oracle

三个关系库,三种活法:互联网、全能开源、商业核心
从谁的角度看
MySQL vs PostgreSQL vs Oracle 对比表
对比维度
MySQL
互联网业务默认选择
PostgreSQL
功能最全的开源库
Oracle
金融级商业库
定位与成本
许可与费用GPL / 商业双许可,社区版免费类 BSD,完全免费无限制商业授权,按 CPU / 用户计费,昂贵
典型用户互联网、电商、SaaS 初创SaaS、GIS、AI 应用、金融科技银行、保险、运营商、大型 ERP
能力
SQL 标准符合度中,方言较多高,最接近标准高,但有 PL/SQL 方言
JSON 支持JSON 类型 + 函数,索引受限JSONB + GIN 索引,可当文档库用JSON 类型(21c+),能力较新
扩展机制插件式存储引擎,功能扩展弱Extension 生态最强(PostGIS / pgvector)内建功能全,但不可自由扩展
存储过程支持,能力一般支持多种语言(PL/pgSQL / Python)PL/SQL 最成熟,企业逻辑常写在库里
性能与并发
并发模型一进程多线程,连接开销小一连接一进程,必须配连接池多进程 + 共享内存(SGA)
MVCC 实现undo log + ReadView,原地更新行版本 + VACUUM,写新版本UNDO 表空间 + SCN,原地更新
写放大较小较大(更新即新版本,索引全改)较小
扩展方式主从 + 分库分表(ShardingSphere)流复制 + 分区 + CitusRAC 多活 + Data Guard + 分区
运维
高可用方案MHA / Orchestrator / MGR流复制 + Patroni / repmgrRAC + Data Guard(最成熟也最贵)
运维门槛低,资料最多中,参数与 VACUUM 要理解高,需要专职 DBA
一句话选型
什么时候选它互联网业务、读多写少、要成熟分库分表方案和现成人才复杂查询、JSON / GIS / 向量、想一个库解决多种需求金融核心、合规审计、要求 7×24 且预算充足

点某一行可以高亮该维度,方便逐条横向读;移动端左右滑动查看全部列。

选型建议

MySQL

大多数互联网业务的默认答案:生态最全、招人最容易、分库分表方案成熟。

PostgreSQL

新项目功能需求复杂(JSON、地理、向量、复杂报表),且团队愿意理解 VACUUM,选它上限更高。

Oracle

金融核心、运营商计费这类不能停机又必须有人兜底的场景,预算够就上。

SQLite

如果数据只属于“一个进程、一台机器”,别上服务端数据库,SQLite 就够了。

一句话结论

选型顺序应该是:先看是不是单机嵌入式(是就 SQLite),再看预算和合规(要商业兜底就 Oracle),最后在 MySQL 和 PostgreSQL 之间按“功能复杂度 vs 生态成熟度”取舍。三者都能存好数据,差别在边界。

其他对比