2025 年 9 月 25 日 - PostgreSQL 全球开发组宣布PostgreSQL 18正式发布,作为世界上最先进的开源数据库,PostgreSQL 18 是目前的最新版本。
PostgreSQL 18 通过全新的 I/O 子系统提升了各种规模工作负载的性能,在从存储读取数据时实现了高达 3 倍的性能提升,并增加了可使用索引的查询数量。该版本降低了主版本升级的影响,加速了升级速度,并缩短了升级完成后达到预期性能所需的时间。开发者也能从PostgreSQL 18的功能中获益,包括可在查询时动态计算值的虚拟生成列,以及提升数据库易用性并能为UUID提供更优索引和读取性能的 uuidv7()
函数。PostgreSQL 18 支持 OAuth 2.0 身份验证,使其更易于与单点登录(SSO)系统集成。
PostgreSQL 核心团队成员 Jonathan Katz 表示,“全球开源社区的共同努力铸就了每一次 PostgreSQL 版本的发布,并持续带来符合用户数据场景的功能。PostgreSQL 18 延续了该项目长久以来提供可靠、稳健数据管理体验的深厚传统,并进一步扩展了其可支持的工作负载范围。”
PostgreSQL是一个创新的数据管理系统,以其可靠性和健壮性著称,得益于全球开发者社区近30年的开源开发,已经成为各种规模组织的首选开源关系型数据库。
PostgreSQL 此前依赖操作系统的预读机制来加速数据检索。然而,操作系统无法感知数据库特有的访问模式,难以准确预测所需数据,导致在许多工作负载场景下性能欠佳。
PostgreSQL 18 引入了新的异步 I/O (AIO) 子系统来解决这一局限。AIO 允许 PostgreSQL 并发地发出多个 I/O 请求,而不是等待每个请求顺序完成,从而增强了现有的预读能力并提高整体吞吐量。PostgreSQL 18 支持的 AIO 操作包括顺序扫描、位图堆扫描和清理(VACUUM)。基准测试显示,在某些场景下性能提升高达 3 倍。
新的io_method
参数允许用户在 worker
和 io_uring
等 AIO 方法之间切换,也可以通过设置 sync
参数保持 PostgreSQL 现有行为。AIO 带来了更丰富的调优维度,详细配置请参考官方文档。
PostgreSQL 的一项关键特性是生成并存储统计信息,有助于 PostgreSQL 选择最优的查询计划。在 PostgreSQL 18 之前,这些统计信息无法在主版本升级过程中保留,导致高负载系统在ANALYZE
完成前查询性能骤降。PostgreSQL 18 引入了在主版本升级时保留规划器统计信息的能力,这有助于升级后的集群更快地达到预期性能。
此外,主版本升级工具pg_upgrade
在 PostgreSQL 18 中迎来多项增强,例如当数据库包含大量表和序列等对象时,升级速度显著提升。此版本还支持通过 --jobs
参数配置并行检查,并新增了 --swap
参数,通过直接交换升级目录的方式替代原有的复制、克隆或链接文件操作。
PostgreSQL 18 通过一系列能自动提升工作负载速度的功能,进一步提升了查询性能。此版本引入了对多列 B-tree 索引上的“跳跃扫描”查找,可缩短在查询中省略一个或多个前缀索引列等值(=
)条件时的执行时间。它还可以优化 WHERE
子句中使用 OR
条件的查询,使其有效利用索引,大幅提升执行速度。此外,PostgreSQL 对表连接的执行计划和处理进行了多项改进,包括提升哈希连接性能、允许合并连接使用增量排序等。PostgreSQL 18 还支持GIN 索引的并行构建,与 B-tree 和BRIN 索引索引一样具备该能力。
该版本还进一步增强了 PostgreSQL 对硬件加速的支持,包括为 popcount
函数添加对 ARM NEON 和 SVE CPU 内置指令集的支持,该函数被bit_count
和其他内部功能使用。
PostgreSQL 18 引入了虚拟生成列,其数值在查询时实时计算而非直接存储,现已成为生成列的默认选项。此外,存储型生成列现已支持逻辑复制。
该版本新增了在RETURNING
子句中同时访问修改前(OLD
)与当前(NEW
)数值的能力,适用于 INSERT
、UPDATE
、DELETE
和 MERGE
命令。 PostgreSQL 18 还通过uuidv7()
函数新增了 UUIDv7 生成功能,可生成按时间戳排序的随机 UUID,有助于优化缓存策略。uuidv4()
也作为 gen_random_uuid()
的别名被引入到PostgreSQL 18 。
PostgreSQL 18 新增了对时间范围约束的支持:通过 WITHOUT OVERLAPS
子句,可在主键(PRIMARY KEY
)和唯一(UNIQUE
)约束中定义不重叠的范围;通过 PERIOD 子句,可为外键(FOREIGN KEY
)约束定义时间区间关系。
最后,PostgreSQL 18 引入了CREATE FOREIGN TABLE ... LIKE
命令,可依据本地表的定义更便捷地创建外部表的模式结构。
PostgreSQL 18 通过多项新特性使文本处理更简单、更快速。此版本新增了PG_UNICODE_FAST
排序规则,该规则在提供完整的Unicode大小写转换语义的同时,显著提升了多种比较操作的性能,涵盖 upper
和 lower
字符串比较函数,以及用于大小写不敏感比较的新casefold
函数。此外,PostgreSQL 18 现在支持对使用非确定性排序规则的文本进行 LIKE
比较,简化了复杂模式匹配的实现。本版本还调整了全文检索的实现机制,使其采用数据库集群的默认排序提供程序,而非始终依赖 libc,这一变化可能导致在运行pg_upgrade
后,需要为所有全文检索及pg_trgm
索引执行重建操作。
PostgreSQL 18 支持在日志和pg_stat_subscription_stats
视图中报告逻辑复制写入冲突。此外,CREATE SUBSCRIPTION
现默认使用并行流式方式来应用事务,有助于提升复制性能。pg_createsubscriber
工具新增了 --all
参数,可以通过一条命令为实例中的所有数据库创建逻辑副本。 PostgreSQL 18 持自动删除空闲复制槽,避免在发布服务器上积压过多WAL日志。
PostgreSQL 18 改进了vacuum策略,通过在常规 vacuum 期间主动冻结更多页面来减少开销,并在需要激进清理的情况下提供了帮助。
PostgreSQL 18 为EXPLAIN
命令提供了更详细的执行信息,自此版本起,在执行 EXPLAIN ANALYZE
时会自动显示访问的缓冲区数量(数据存储的基本单位)。此外,EXPLAIN ANALYZE
现在会显示索引扫描期间发生的索引查找次数,而 EXPLAIN ANALYZE VERBOSE
则会包含 CPU、WAL 和平均读取统计信息。PostgreSQL 18 还在pg_stat_all_tables
视图增加了有关 VACUUM 及相关操作耗时统计,以及按连接统计的 I/O 和 WAL 使用情况数据。
通过 PostgreSQL 18 initdb
初始化的数据库, 现在默认启用页校验和 (page checksums)。这会影响从未启用校验和的集群升级,在使用pg_upgrade
时需要使用 --no-data-checksums
参数创建一个新的 PostgreSQL 18 集群。
PostgreSQL 18推出了新版(3.2)的PostgreSQL通信协议,这是自2003年PostgreSQL 7.4发布以来的首个重大更新。目前,libpq
库仍默认使用3.0版本协议,而客户端工具(如驱动程序、连接池、代理服务器等)将逐步增加对新协议版本的支持。
PostgreSQL 18还新增了许多其他新功能和改进,这些可能对您的使用场景有所帮助。请查看发布说明,以获取完整的新功能和更改列表。
PostgreSQL是世界上最先进的开源数据库,拥有一个数以千计的用户、贡献者、公司和组织组成的全球社区。PostgreSQL起源于加利福尼亚大学伯克利分校,已经有超过40年的历史,并且以无与伦比的速度持续发展。PostgreSQL成熟的特性不仅与顶尖商业数据库系统相媲美,而且在高级数据库功能、可扩展性、安全性和稳定性方面超越了它们。
PostgreSQL是世界上最先进的开源数据库,拥有一个数以千计的用户、贡献者、公司和组织组成的全球社区。PostgreSQL起源于加利福尼亚大学伯克利分校,已经有超过40年的历史,并且以无与伦比的速度持续发展。PostgreSQL成熟的特性不仅与顶尖商业数据库系统相媲美,而且在高级数据库功能、可扩展性、安全性和稳定性方面超越了它们。
Learn more about PostgreSQL and participate in our community at PostgreSQL.org.
关于上述功能和其他功能的解释,请参见以下资源:
您可以通过以下几种方式下载 PostgreSQL 18,包括:
更多工具和扩展可在PostgreSQL Extension Network获取。
PostgreSQL 18 附带了HTML文档和手册,您也可以在线浏览HTML和PDF格式的文档。
PostgreSQL 使用PostgreSQL 许可证,这是一种类似 BSD 的“宽松”许可证。这种经OSI认证的许可证因其灵活性和对商业友好而受到广泛赞誉,因为它不限制在商业和专有应用程序中使用PostgreSQL。加上多公司支持和代码的公共所有权,该许可证使PostgreSQL非常受欢迎,因为供应商希望在自己的产品中嵌入数据库,而无需担心费用、供应商锁定或许可条款变更。
网站
邮箱
Postgres、PostgreSQL和大象标志(Slonik)都是PostgreSQL 社区协会的注册商标。如果您希望使用这些标志,您必须遵守商标政策。
PostgreSQL得到了许多公司的支持,他们赞助开发人员,提供托管资源,并给予我们财务支持。请查看我们的赞助商页面,了解这些项目的支持者。
还有大量提供PostgreSQL支持的公司,包括个人顾问和跨国公司。
如果您希望对PostgreSQL全球开发组或其中一个公认的社群非营利组织进行捐赠,请访问我们的捐赠页面。