2024 年 9 月 26 日 - PostgreSQL 全球开发组今日宣布发布 PostgreSQL 17,这是世界上最先进的开源数据库的最新版本。
PostgreSQL 17 建立在数十年的开源开发积累之上,在继续适应新兴数据访问与存储模式的同时,进一步提升了性能与可扩展性。这个版本的 PostgreSQL 带来了显著的整体性能提升,包括重构后的 vacuum 内存管理实现、面向高并发工作负载的存储访问优化、批量加载与导出加速,以及面向索引的查询执行改进。PostgreSQL 17 也为新工作负载与关键系统带来了同样有价值的能力,例如通过 SQL/JSON 的 JSON_TABLE 命令增强开发者体验,以及通过逻辑复制增强来简化高可用工作负载与主版本升级的管理。
PostgreSQL 核心团队成员 Jonathan Katz 表示:“PostgreSQL 17 充分展示了推动 PostgreSQL 持续发展的全球开源社区,如何为数据库使用过程中的各类用户构建真正有价值的增强能力。无论是支撑大规模数据库运行的性能改进,还是进一步强化开发者体验的新特性,PostgreSQL 17 都将全面提升您的数据管理体验。”
PostgreSQL 是一个以可靠性、健壮性和可扩展性著称的创新型数据管理系统。得益于全球开发者社区 25 年以上的开源开发积累,它已成为各类组织首选的开源关系型数据库。
PostgreSQL 的 vacuum 进程对于数据库健康运行至关重要,但它也需要消耗服务器实例资源。PostgreSQL 17 为 vacuum 引入了新的内部内存结构,最高可将内存消耗降至原来的 1/20。这不仅提升了 vacuum 的执行速度,也减少了对共享资源的占用,从而为业务负载释放出更多资源。
PostgreSQL 17 继续改进其 I/O 层性能。由于预写式日志(WAL)处理得到优化,高并发工作负载的写入吞吐量最高可提升 2 倍。此外,新的流式 I/O 接口还加快了顺序扫描(读取整张表的数据)以及 ANALYZE 更新规划器统计信息的速度。
PostgreSQL 17 还将性能增益扩展到了查询执行层面。PostgreSQL 17 改进了使用 IN 子句且依赖 B-树 索引的查询性能;B-树是 PostgreSQL 默认的索引方法。此外,BRIN 索引现在也支持并行构建。PostgreSQL 17 还纳入了多项查询规划改进,包括对 NOT NULL 约束的优化,以及对公共表表达式(WITH 查询)处理方式的改进。此版本还增加了更多 SIMD(单指令多数据)支持,例如利用 AVX-512 加速 bit_count 函数。
PostgreSQL 是首个引入 JSON 支持的关系型数据库(2012 年),而 PostgreSQL 17 则继续完善其对 SQL/JSON 标准的实现。现在,JSON_TABLE 已可在 PostgreSQL 17 中使用,使开发者能够将 JSON 数据转换为标准 PostgreSQL 表。PostgreSQL 17 还支持 SQL/JSON 构造函数(JSON、JSON_SCALAR、JSON_SERIALIZE)以及查询函数(JSON_EXISTS、JSON_QUERY、JSON_VALUE),为开发者提供了更多与 JSON 数据交互的方式。此版本还增加了更多 jsonpath 表达式,重点加强了将 JSON 数据转换为原生 PostgreSQL 数据类型(例如数值、布尔值、字符串与日期/时间类型)的能力。
PostgreSQL 17 还为 MERGE 增加了更多功能,包括 RETURNING 子句以及更新视图的能力。除此之外,PostgreSQL 17 还为批量加载和数据导出带来了新能力:使用 COPY 导出大行数据时,性能最高可提升 2 倍。当源编码与目标编码一致时,COPY 的性能也会进一步提升;同时它还增加了新的 ON_ERROR 选项,允许在插入出错时继续导入。
此版本进一步扩展了分区数据管理以及跨远程 PostgreSQL 实例的数据处理能力。PostgreSQL 17 现已支持在分区表上使用身份列与排除约束。用于在远程 PostgreSQL 实例上执行查询的 PostgreSQL 外部数据包装器(postgres_fdw)现在还可以将 EXISTS 与 IN 子查询下推到远程服务器,以获得更高的执行效率。
PostgreSQL 17 还引入了一个内建、平台无关且保证不可变的排序规则提供程序。它的排序语义与 C 排序规则类似,但采用 UTF-8 编码而不是 SQL_ASCII。使用这一新的排序规则提供程序,可以确保基于文本的查询无论在何处运行 PostgreSQL,都能返回一致的排序结果。
逻辑复制广泛用于实时流式传输数据。但在此版本之前,想执行主版本升级的用户必须删除逻辑复制槽,这意味着升级后需要重新同步订阅端数据。从升级到 PostgreSQL 17 起,用户无需再删除逻辑复制槽,从而显著简化了使用逻辑复制时的升级过程。
PostgreSQL 17 现在还为逻辑复制提供了故障切换控制,使其在高可用环境中更加稳健。此外,PostgreSQL 17 引入了 pg_createsubscriber 命令行工具,可将物理副本转换为新的逻辑副本。
PostgreSQL 17 进一步扩展了用户对数据库系统全生命周期的管理能力。PostgreSQL 现已提供新的 TLS 选项 sslnegotiation,允许用户在使用 ALPN 时直接执行 TLS 握手(在 ALPN 目录中注册为 postgresql)。PostgreSQL 17 还增加了 pg_maintain 预定义角色,用于授予用户执行维护操作的权限。
PostgreSQL 自带的备份工具 pg_basebackup 现已支持增量备份,并新增 pg_combinebackup 工具,用于重建完整备份。此外,pg_dump 新增了 --filter 选项,可让用户在生成转储文件时精确选择要包含的对象。
PostgreSQL 17 还增强了监控与分析能力。EXPLAIN 现在会显示本地 I/O 块读写所花费的时间,并增加了两个新选项:SERIALIZE 和 MEMORY,分别有助于观察网络传输中的数据转换耗时以及内存使用情况。PostgreSQL 17 还会报告索引 vacuum 进度,并新增 pg_wait_events 系统视图;该视图与 pg_stat_activity 结合使用时,可更深入地解释活跃会话为何处于等待状态。
PostgreSQL 17 还加入了许多其他新功能与改进,可能同样适用于您的使用场景。完整的新功能与变更列表,请参阅 发布说明。
PostgreSQL 是世界上最先进的开源数据库,拥有一个由数千名用户、贡献者、公司和组织组成的全球社区。PostgreSQL 起源于加利福尼亚大学伯克利分校,建立在超过 35 年的工程积累之上,并始终保持着无与伦比的发展速度。PostgreSQL 成熟的特性集不仅能够匹配顶级专有数据库系统,而且在高级数据库功能、可扩展性、安全性与稳定性方面更胜一筹。
PostgreSQL 是世界上最先进的开源数据库,拥有一个由数千名用户、贡献者、公司和组织组成的全球社区。PostgreSQL 起源于加利福尼亚大学伯克利分校,建立在超过 35 年的工程积累之上,并始终保持着无与伦比的发展速度。PostgreSQL 成熟的特性集不仅能够匹配顶级专有数据库系统,而且在高级数据库功能、可扩展性、安全性与稳定性方面更胜一筹。
Learn more about PostgreSQL and participate in our community at PostgreSQL.org.
有关上述功能及其他改进的详细说明,请参阅以下资源:
您可以通过以下方式获取 PostgreSQL 17:
其他工具与扩展可在 PostgreSQL Extension Network 获取。
PostgreSQL 17 附带 HTML 文档与手册页,您还可以在线浏览 HTML 与 PDF 格式的文档。
PostgreSQL 使用 PostgreSQL 许可证,这是一种类似 BSD 的宽松许可证。该许可证已获 OSI 认证,因其灵活且适合商业使用而广受赞誉,因为它不限制 PostgreSQL 在商业和专有应用中的使用。再加上多家公司支持以及代码公共所有权,这使 PostgreSQL 对希望在自身产品中嵌入数据库的厂商极具吸引力,无需担心费用、供应商锁定或许可条款变化。
网站
邮箱
Postgres、PostgreSQL 和大象标志(Slonik)均为 PostgreSQL 社区协会 的注册商标。如果您希望使用这些标志,必须遵守商标政策。
PostgreSQL 得到了众多公司的支持,这些公司赞助开发人员、提供托管资源,并给予项目财务支持。请查看我们的赞助商页面,了解项目的重要支持者。
此外,还有大量提供 PostgreSQL 支持服务的公司,从个人顾问到跨国企业均有覆盖。
如果您希望向 PostgreSQL 全球开发组或其中一个获认可的社区非营利组织捐赠,请访问我们的捐赠页面。