PostgreSQL 13、14、15 是近年来非常稳定且广泛使用的三个版本。它们并非简单的"修修补补",每个版本都有标志性的"杀手锏"特性。
截至 2026 年 3 月 的状态:
- PG 13 : 即将结束生命周期(EOL 预计在 2025 年底),不建议新项目使用。
- PG 14 : 正值壮年,稳定性极高,是目前很多企业的主力生产版本。
- PG 15 : 功能成熟,引入了 SQL 标准的重要特性,是新项目的推荐首选(除非你需要 PG 16/17 的最新特性)。
以下是这三个版本的深度对比和核心差异解析:
🚀 核心差异一览表
| 特性维度 | PostgreSQL 13 (2020) | PostgreSQL 14 (2021) | PostgreSQL 15 (2022) |
|---|---|---|---|
| 定位 | 性能与空间优化版 | 高并发与 JSON 增强版 | SQL 标准合规与模块化版 |
| 杀手锏特性 | 增量排序、B-Tree 去重 | JSON 路径查询、并行聚合增强 | MERGE 语句、权限分离、扩展安全 |
| 排序性能 | ⭐⭐⭐⭐ (引入 Incremental Sort) | ⭐⭐⭐⭐ (优化内存管理) | ⭐⭐⭐⭐⭐ (进一步优化) |
| JSON 能力 | 基础支持 | 质变 (jsonb_path_*) | 持续优化 |
| 存储引擎 | 传统堆表 | 传统堆表 | 支持 ICU 排序规则 (独立于 OS) |
| 安全性 | 常规 | 常规 | 重大升级 (默认拒绝公共模式写入) |
| 适用建议 | 老项目维护 | 稳健型生产环境 | 新项目首选 / 需要 MERGE 语法 |
🔍 深度解析:每个版本的"高光时刻"
1. PostgreSQL 13:空间与排序的革新者
关键词:Incremental Sort、B-Tree Deduplication
- 🌟 增量排序 (Incremental Sort)
- 痛点:以前如果数据部分有序(比如按时间分区查最近几天的数据),PG 也要把全部数据重新排序,浪费资源。
- 解决:PG 13 能识别"这部分已经有序了",只排序剩下的部分。
- 效果 :在
ORDER BY结合LIMIT或部分有序数据场景下,速度提升 20%~50%。
- 🌟 B-Tree 索引去重 (Deduplication)
- 痛点 :如果有大量重复值(如
gender,status),索引会存储多份相同的键,导致索引膨胀。 - 解决:相同键值只存一次,后面跟一个列表指向所有行。
- 效果 :索引体积减少 30%~50%,减少磁盘 IO,提升扫描速度。
- 痛点 :如果有大量重复值(如
- 🛠️ 并行 Vacuum
- 允许
VACUUM命令并行处理大表,减少维护窗口时间。
- 允许
💡 形象比喻 :
PG 13 像一个**"整理收纳师"**。它把杂乱的衣柜(索引)里的同款衣服叠在一起(去重),并且当你只要拿最上面几件时,它不会把下面乱序的衣服重新叠一遍(增量排序)。
2. PostgreSQL 14:JSON 与高并发的强者
关键词:SQL/JSON Path、Parallel Aggregate、pg_stat_database
- 🌟 原生 JSON 路径查询 (SQL/JSON Path)
-
痛点 :以前查 JSONB 字段只能用
->或@>,复杂嵌套查询写起来像天书。 -
解决 :引入了类似 JavaScript 的路径语法
jsonb_path_query。 -
代码对比 :
sql-- PG 13 及以前 (写法繁琐) SELECT data->'user'->>'name' FROM logs WHERE data->'status' = '"active"'; -- PG 14+ (优雅的路径查询) SELECT jsonb_path_query_first(data, '$.user.name') FROM logs WHERE jsonb_path_exists(data, '$.status ? (@ == "active")'); -
效果:对 JSON 数据的处理能力逼近 MongoDB,适合做文档型存储。
-
- 🌟 并行聚合增强
- 更多的聚合函数(如
GROUP BY中的复杂计算)支持并行处理,大幅加速大数据分析报表。
- 更多的聚合函数(如
- 🌟 连接管理优化
- 改进了大量并发连接下的锁竞争问题,高并发场景下吞吐量更稳。
💡 形象比喻 :
PG 14 像一个**"多语言翻译官" + "大力士"**。它不仅能更轻松地读懂复杂的 JSON"外语"(路径查询),还能叫来更多帮手一起搬砖(并行聚合),干重活累活更快。
3. PostgreSQL 15:标准化与安全化的里程碑
关键词:MERGE、Security Hardening、ICU Collation
- 🌟 标准 MERGE 语句 (UPSERT 的终极形态)
- 痛点 :以前要实现"存在则更新,不存在则插入",得用
INSERT ... ON CONFLICT DO UPDATE,语法受限且不够标准。 - 解决 :支持 SQL 标准的
MERGE INTO ... WHEN MATCHED ... WHEN NOT MATCHED ...。 - 意义:从 Oracle/SQL Server 迁移到 PG 的成本大幅降低,数据同步脚本更通用。
- 痛点 :以前要实现"存在则更新,不存在则插入",得用
- 🌟 安全性重大加固 (Security Hardening)
- 默认权限变更 :默认情况下,普通用户不再拥有
publicschema 的CREATE权限。 - 背景 :以前黑客利用默认权限在
public库建恶意函数提权。PG 15 直接堵死了这个漏洞。 - 注意:升级后旧应用可能会报错"permission denied for schema public",需要手动授权。
- 默认权限变更 :默认情况下,普通用户不再拥有
- 🌟 ICU 排序规则独立
- 排序规则(Collation)不再依赖操作系统,而是内置 ICU 库。
- 好处:不同 Linux 发行版之间的排序行为一致,避免迁移时数据顺序错乱。
- 🌟 扩展程序安全
- 只有超级用户才能创建"非可信"扩展,防止普通用户加载恶意代码。
💡 形象比喻 :
PG 15 像一个**"严谨的律师" + "安保专家"**。它引入了国际通用的法律条文(MERGE 标准),并且给大楼装了门禁系统(默认禁止 public 写入),只有持特许证的人才能进特定房间(扩展安全)。
📊 性能与功能横向评测
1. 排序性能 (ORDER BY + LIMIT)
- PG 13: ⭐⭐⭐⭐ (引入增量排序,飞跃)
- PG 14: ⭐⭐⭐⭐ (维持并微调)
- PG 15: ⭐⭐⭐⭐⭐ (进一步优化内存使用)
- 结论 : 如果业务有大量分页排序,PG 13+ 都比 12 强很多。
2. JSON 处理能力
- PG 13: ⭐⭐ (基础)
- PG 14: ⭐⭐⭐⭐⭐ (路径查询是质变)
- PG 15: ⭐⭐⭐⭐⭐ (性能微调)
- 结论 : 如果把 PG 当 MongoDB 用,必须 PG 14+。
3. 运维与升级友好度
- PG 13: 常规。
- PG 14: 常规。
- PG 15 : ⚠️ 注意。由于默认权限变更和 ICU 排序的引入,从老版本升级到 15 需要更仔细的测试(尤其是涉及排序和权限的应用)。
💡 选型建议 (2026 年版)
✅ 选择 PostgreSQL 14 的理由:
- 求稳:你已经在线上跑了很久,不想冒任何兼容性风险。
- 无需 MERGE :你的代码里
INSERT ... ON CONFLICT用得很爽,不需要标准 MERGE。 - 现状:很多大厂目前的主力集群仍停留在 14,生态插件支持最完善。
✅ 选择 PostgreSQL 15 的理由 (推荐新项目):
- 新项目:没有任何历史包袱,直接上最新稳定版。
- 数据同步需求 :需要从 Oracle/SQL Server 迁移,或者大量使用 ETL 工具,
MERGE语法能省很多事。 - 安全合规:对安全审计要求高,希望默认配置就符合最小权限原则。
- 跨平台一致性:需要在不同 Linux 发行版间迁移,担心排序规则不一致。
❌ 避免选择 PostgreSQL 13:
- 生命周期:截至 2026 年 3 月,PG 13 已经或即将停止官方支持(EOL),不再有安全补丁。
- 除非 :你被锁定在某个老旧的云厂商版本无法升级,否则不要在新项目中使用。
🔄 升级路线图
如果你还在用 PG 13:
- 短期 :尽快规划升级到 PG 15 (跳过 14 直接升 15 是支持的,但需测试权限和排序)。
- 长期 :关注 PG 16/17 (提供了更好的逻辑复制和性能监控)。
总结:
老项目守 14,新项目上 15,千万别用 13。
如果需要强大的 JSON 查询,14 是分水岭 ;如果需要标准 SQL 语法和高安全基线,15 是必选项。