作者 | Renato Losio

译者 | 刘雅梦

策划 | 丁晓昀

PostgreSQL 全球开发小组最近宣布PostgreSQL 17 正式发布,PostgreSQL 17 是该流行开源数据库的最新版本。该版本侧重于性能改进,包括用于清理(Vacuum)的新内存管理实现、存储访问优化以及对高并发工作负载的增强。

虽然最新的 GA 版本对查询性能进行了总体改进,并为分区管理增加了更多的灵活性,但许多数据库管理员都强调了其对清理的更新,这些更新减少了内存使用,缩短了清理时间,并显示了清理索引的进度。清理(Vacuuming)是一种旨在回收不再需要的数据所占用的存储空间的操作。PostgreSQL 17 中更高效的 VACUUM 操作是由新的数据结构 TidStore 实现的,该结构在 VACUUM 操作期间存储元组 ID。该团队解释说:

PostgreSQL 的清理进程对于健康操作至关重要,需要服务器实例资源才能运行。PostgreSQL 17 为清理引入了一种新的内部内存结构,内存消耗减少了 20 倍。这提高了清理速度,也减少了共享资源的使用,为我们的工作负载提供了更多的可用资源。

PostgreSQL 17 引入了对逻辑复制的增强,通过消除删除逻辑复制槽的需要,简化了高可用性工作负载的管理和主要引擎版本的升级。最近的其他改进还包括增强了读取多个连续块的工作负载的 I/O 性能,改进了 EXPLAIN 支持,以及更好地处理 IS [NOT] NULL 条件。

虽然改进列表很长,但该版本可能缺少一个突出的新特性。CYBERTEC 的高级顾问和支持工程师 Laurenz Albe 写道:

这并不是因为 PostgreSQL 已经失去了发展势头:事实上,今天的贡献者比以往任何时候都多 (......) 多年来,许多聪明人做出了许多伟大的贡献。大多数简单、明显的改进(以及一些困难的改进!)已经完成了。剩下的缺失功能是真正困难的功能。

新版本支持 JSON_TABLE 选项,该选项允许同时处理 JSON 数据和常规 SQL 数据。与 MySQL 类似,JSON_TABLE 是一个 SQL/JSON 函数,用于查询 JSON 数据并将结果显示为关系视图。