开发者生态
morning
PostgreSQL 19 Beta 版引入 SQL 图查询和并发布重新备份功能
2026-06-25
1 阅读
作者:Renato Losio
PostgreSQL 19 Beta 版正式发布 ",预计将于 9 月正式上线,这符合该项目每年发布一次主要版本的节奏。该版本引入了原生 SQL 属性图查询(SQL/PGQ)、可在不停服务的情况下回收存储空间的重新打包功能,以及一系列涉及性能、可观测性和管理方面的改进。 凭借对 SQL/PGQ 的支持,该版本允许在现有关系型表上执行图查询,而不需要单独的图数据库或数据迁移。PostgreSQL 19 还扩展了 v18 中引入的异步 I/O 框架,实现了 I/O 工作进程的自动扩展,并新增了 pg_plan_advice 和 pg_stash_advice 扩展,用于控制和持久化查询规划器的决策。维护操作方面也进行了重大升级,包括并行自动清理(autovacuum)、更智能的清理优先级排序、通过自动化页面可见性跟踪减少未来的清理操作,以及一个带有非阻塞 CONCURRENTLY 选项的新 REPACK 命令,用于在线表重建。 根据 PostgreSQL 全球开发组的公告,性能提升是本次更新的重点之一: 在存在外键检查的情况下,PostgreSQL 19 的插入性能最高可以提升 2 倍。此外,该版本还从多个方面改进了查询规划器和执行器,包括新的反连接优化、更广泛地使用增量排序、可加速行处理的预聚合、并行顺序扫描期间从存储设备读取数据时的速度提升,以及当输入不可为空时,将 IS DISTINCT FROM 和 IS NOT DISTINCT FROM 简化为普通的 <> 和 = 运算符。此外,LISTEN/NOTIFY 的可扩展性也得到了改进,这会影响多通道工作负载。 现在,逻辑复制可以自动同步序列值,在主要版本升级期间不需要进行手动对账,而且不需要重启服务器即可启用,这有助于减少计划内停机时间。ProxySQL 创始人兼首席执行官 René Cannaò 写道 ": PostgreSQL 19 引入了一项功能,将消除许多繁琐的后端变通方案:WAIT FOR LSN。(...) 过去,开发人员曾为此采用过一些脆弱的权宜之计,例如应用程序休眠定时器,或者强制将所有写入后的读取操作回退到主数据库。借助 PostgreSQL 19,读取副本可以原生地暂停会话,直到完全跟上特定写入操作为止。 社区的初步反响表明,尽管 SQL/PGQ 是一个备受瞩目的亮点功能,但 PostgreSQL 运维人员对运维方面的改进更为兴奋。PGX 首席执行官 Christophe Pettus 评论道 ": PG19 中对生产环境影响最大的改动,并非那些备受瞩目的功能。默认将 jit 设为 off 这一看似不起眼的调整,将改变那些曾经默默受益(或受损)于 JIT 编译的分析工作负载的查询计划和执行时间。64 位 MultiXactOffset 的引入,终于消除了困扰繁忙的多行锁定工作负载的 40 亿条记录溢出风险。 云服务提供商已经开始采用 PostgreSQL 19,其中亚马逊云科技已经在 RDS 数据库预览环境 "中发布了 Beta 1 版本,供用户在完全托管的环境中进行评估。在正式发布之前,社区成员已 在 Reddit 上讨论 "了新增的 pg_plan_advice 功能及其他预期会增加的功能。 PGQViewer " 是一款专为 PostgreSQL 19 打造的开源图探索工具。这是生态系统早期采用的一个例子。 Mark Callaghan " 在一台小型服务器上进行了基准测试 ",并表示:“Postgres 依然‘平淡无奇’,但这恰恰是它的优点,你很难发现它性能退化。” Beta 1 构建 "、 待解决事项 "及 发布说明 "现在都已经发布。从旧版本迁移数据需要使用 pg_dumpall、pg_upgrade或逻辑复制进行导出/还原。 原文链接: https://www.infoq.com/news/2026/06/postgresql-19-graph-queries/ "