PostgreSQL 18已发布,新增多项功能,包括异步I/O、升级后性能提升以及文本处理改进。
异步I/O允许PostgreSQL同时发出多个I/O请求,而无需等待上一个请求完成再开始下一个。据PostgreSQL团队介绍,这提高了整体吞吐量,在某些场景下性能提升高达3倍。
此前,PostgreSQL使用操作系统预读机制进行数据检索,但由于操作系统无法洞察数据库特定的访问模式,无法始终预测需要哪些数据,导致在许多工作负载下性能欠佳。团队解释称,异步I/O正是为解决这一限制而创建。
此版本还引入了在主要版本升级后保留规划器统计信息的能力,而此前这些统计信息不会保留。这有助于升级后的集群在升级后更快达到预期性能。
文本处理也得到改进,新增的PG_UNICODE_FAST排序规则为大小写转换提供了完整的Unicode语义。PostgreSQL 18还支持对使用非确定性排序规则的文本进行LIKE比较,从而简化了复杂模式匹配。此外,全文搜索现在使用排序规则的默认排序提供程序,而非libc。
此版本还关注开发者体验,新增了虚拟生成列(在查询时计算值)、在WITHOUT OVERLAPS子句中为PRIMARY KEY和UNIQUE约束添加时间约束,以及能够使用本地表的定义通过CREATE FOREIGN TABLE … LIKE命令创建外部表的模式定义。
PostgreSQL 18的性能改进包括在多列B树索引上跳过扫描查找以改善查询执行时间、优化使用WHERE中OR条件的查询的索引,以及改进PostgreSQL计划和执行表连接的方式。此版本还支持硬件加速,包括支持ARM NEON和SVE CPU intrinsics用于popcount函数。
此版本的其他更新包括支持OAuth 2.0、支持在日志中报告逻辑复制的写入冲突,以及在清理期间主动冻结页面。
“全球开源社区的努力塑造了每一个PostgreSQL版本,并帮助提供满足用户数据需求的功能,”PostgreSQL核心团队成员Jonathan Katz表示。“PostgreSQL 18建立在项目长期、丰富的历史基础上,提供可靠且强大的数据管理体验,同时继续扩展其支持的工作负载。”
完整更新列表可在发布说明中找到。