2025 年 9 月 25 日 - PostgreSQL 全球开发组今日宣布发布 PostgreSQL 18,这是世界上最先进的开源数据库的最新版本。
PostgreSQL 18 通过全新的 I/O 子系统提升了各类工作负载的性能;在从存储读取数据时,性能提升最高可达 3 倍,同时还扩大了能够利用索引的查询范围。此版本降低了主版本升级带来的扰动,加快了升级速度,并缩短了升级完成后恢复到预期性能所需的时间。开发者也能从 PostgreSQL 18 中直接受益,例如可在查询时计算数值的虚拟生成列,以及能够为 UUID 带来更佳索引与读取性能的 uuidv7() 函数。借助对 OAuth 2.0 身份验证的支持,PostgreSQL 18 也更易于与单点登录(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 18 之前,这些统计信息无法在主版本升级过程中保留,导致高负载系统在ANALYZE完成前查询性能明显下降。PostgreSQL 18 新增了在主版本升级中保留规划器统计信息的能力,使升级后的集簇能够更快恢复到预期性能。
此外,执行主版本升级的工具 pg_upgrade 在 PostgreSQL 18 中也获得了多项增强。例如,当数据库包含大量表、序列等对象时,升级速度会更快。此版本还允许通过 --jobs 参数并行执行检查,并新增了 --swap 参数,通过交换升级目录来替代复制、克隆或链接文件的方式。
PostgreSQL 18 进一步提升了查询性能,并通过一系列可自动生效的优化让工作负载运行得更快。此版本在多列 B-tree 索引上引入了“跳跃扫描”能力,可提升查询在缺少一个或多个前缀索引列等值条件(=)时的执行效率。它还能够优化 WHERE 子句中包含 OR 条件的查询,使其更好地利用索引,从而显著缩短执行时间。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 还增加了时态约束支持。借助 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 引入了 oauth 认证,使用户能够通过 PostgreSQL 扩展所支持的 OAuth 2.0 机制完成身份验证。此外,PostgreSQL 18 还增加了对 FIPS 模式的校验支持,并新增了 ssl_tls13_ciphers 参数,用于配置服务端 TLS v1.3 密码套件。
此版本将 md5 密码认证标记为弃用,并将在未来版本中移除。如果您仍需使用 PostgreSQL 的密码认证,请改用 SCRAM 认证。PostgreSQL 18 还为 postgres_fdw 与 dblink 增加了 SCRAM 透传认证支持,以便连接远程 PostgreSQL 实例。此外,pgcrypto 现已支持 基于 SHA-2 的密码哈希加密。
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 还引入了新的 PostgreSQL 通信协议版本(3.2),这是自 PostgreSQL 7.4(2003 年)以来首次引入新协议版本。当前,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 全球开发组或其中一个获认可的社区非营利组织捐赠,请访问我们的捐赠页面。