PostgreSQL 18 已发布,新增多项功能,包括异步 I/O、升级后性能优化以及文本处理改进。
异步 I/O 允许 PostgreSQL 同时发出多个 I/O 请求,而无需等待前一个请求完成后再启动下一个。据 PostgreSQL 团队介绍,这提高了整体吞吐量,在某些场景下性能提升高达 3 倍。
此前,PostgreSQL 使用操作系统预读机制进行数据检索,但由于操作系统缺乏对数据库特定访问模式的洞察,无法始终预测所需数据,导致在许多工作负载下性能欠佳。团队解释,异步 I/O 的引入正是为了应对这一限制。
此版本还支持在主要版本升级后保留规划器统计信息,而此前这些信息不会保留。这有助于升级后的集群在升级后更快达到预期性能。
文本处理方面也有所改进,新增的 PG_UNINCODE_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 建立在项目长期、丰富的交付可靠且健壮的数据管理经验的历史之上,同时继续扩展其支持的工作负载。”
完整的更新列表可在发布说明中找到。