2025年9月25日: PostgreSQL 18 发布!

PostgreSQL 15 Beta 1 发布!

发布于 2022-05-19,作者:PostgreSQL全球开发组
PostgreSQL 项目

PostgreSQL 全球开发组宣布 PostgreSQL 15 的第一个 Beta 版本现已可供下载。此版本包含了 PostgreSQL 15 正式发布时将提供的所有功能的预览,尽管在 Beta 期间,一些细节可能会发生变化。

您可以在发行说明中找到 PostgreSQL 15 中所有功能和更改的信息。

https://postgresql.ac.cn/docs/15/release-15.html

秉承开源 PostgreSQL 社区的精神,我们强烈鼓励您在自己的系统上测试 PostgreSQL 15 的新功能,以帮助我们消除可能存在的 bug 或其他问题。虽然我们不建议在生产环境中使用 PostgreSQL 15 Beta 1,但我们鼓励您尝试将典型的应用程序工作负载运行在此 Beta 版本上。

您的测试和反馈将帮助社区确保 PostgreSQL 15 版本能够秉承我们一贯的标准,即提供最先进的开源关系型数据库的稳定、可靠的版本。请阅读更多关于我们的Beta 测试流程以及您如何贡献的内容。

https://postgresql.ac.cn/developer/beta/

PostgreSQL 15 功能亮点

开发者体验

PostgreSQL 15 增加了简化和增强开发者体验的新功能。

此版本引入了 SQL 标准命令 MERGE,用于对数据执行条件性写入操作(INSERTUPDATEDELETE)。在此版本之前,可以通过存储过程或有限地使用 INSERT ... ON CONFLICT 来实现相同的行为。借助 PostgreSQL 15,开发人员可以编写简单、富有表现力的查询来选择适当的数据修改操作。

PostgreSQL 在 2012 年的9.2 版本中添加了对 JSON 的支持。五年后发布的 SQL/JSON 标准规定了用于访问和操作存储在关系数据库中的 JSON 数据的各种接口。PostgreSQL 15 基于其现有的对 SQL/JSON 路径语言的支持,包含了更多标准的SQL/JSON 函数。这些函数包括SQL/JSON 构造函数查询/内省函数,以及将JSON 数据转换为表的能力。

PostgreSQL 15 增加了更多的正则表达式函数,包括 regexp_countregexp_instrregexp_likeregexp_substr。在 PostgreSQL 15 中引入的用于将range 数据类型聚合为 multirange 类型的 range_agg 函数,现在也支持聚合 multirange 类型。

性能

PostgreSQL 15 继续在过去几个版本的性能提升基础上再接再厉。此版本显著提高了在处理大型数据集时排序数据的速度。特别是,这些数据集的大小超过了 work_mem 参数的限制。

PostgreSQL 15 的性能提升扩展到多种查询类型。这包括为 SELECT DISTINCT 语句引入并行化,以及改进使用 row_number()rank()count()窗口函数的性能。使用PostgreSQL 外部数据包装器 postgres_fdw 管理远程 PostgreSQL 服务器上数据的应用程序现在可以启用并行提交事务。此外,涉及分区表的查询也有多项性能改进。

PostgreSQL 系统表和 TOAST 表(用于存储大于单个页面(8kB)的数据)现在可以利用索引去重,从而实现更小的索引和更快的查找。

psql 的 \copy 命令(用于批量加载数据)在 PostgreSQL 15 中也得到了性能改进。

备份、归档和压缩

在前一个版本引入 LZ4 压缩的基础上,PostgreSQL 15 为各种组件增加了对 Zstandard (zstd) 压缩的支持。

pg_basebackup 是一个用于完整备份 PostgreSQL 集群的工具,现在支持使用 Gzip、LZ4 或 Zstandard 压缩进行服务器端压缩。pg_basebackup 客户端现在还可以解压缩使用 LZ4 和 Zstandard 压缩的备份。

现在可以通过 wal_compression 配置参数使用 LZ4 和 Zstandard 压缩来压缩预写日志(WAL)文件。此外,PostgreSQL 15 还增加了 recovery_prefetch 选项,通过预取数据块来帮助加快恢复操作。此版本增加了一个名为 pg_walinspect 的新模块,允许您直接从 SQL 中检查 WAL 文件信息。

PostgreSQL 15 允许您通过指定 archive_library 来执行 WAL 归档,而无需运行 shell 命令。在 basic_archive 模块中可以找到 WAL 归档库的示例。此外,扩展现在可以定义自己的 WAL 资源管理器,允许它们与逻辑复制协同工作。

逻辑复制

PostgreSQL 15 为逻辑复制引入了行过滤列过滤。此外,用户现在可以方便地指定发布一个模式中的所有表,而以前只能为数据库中的所有表执行此操作。

此版本还增加了对处理冲突的支持。订阅者现在可以指定 disable_on_error 来在出错时自动停止逻辑复制。PostgreSQL 15 允许使用 ALTER SUBSCRIPTION ... SKIP 命令跳过应用更改。

管理

PostgreSQL 15 引入了用于日志记录的 jsonlog 格式。这使得 PostgreSQL 日志能够被许多执行结构化日志聚合和分析的程序所消费。PostgreSQL 15 现在默认记录缓慢的检查点和 autovacuum 操作。

psql 客户端现在有一个名为 \dconfig 的命令,用于检查配置参数的值。默认情况下,\dconfig 显示任何未设置为默认值的配置参数。

PostgreSQL 15 现在将所有服务器级别的统计信息存储在共享内存中。服务器不再运行统计信息收集器进程。

ALTER TABLE 命令现在可以修改表的 ACCESS METHOD,它用于设置表使用的存储系统。

安全

PostgreSQL 15 在创建数据库时引入了新的默认设置。当在一个新的数据库中创建对象时,除了数据库所有者(由 pg_database_owner 表示)和超级用户之外,其他用户不能在默认的 public 模式中创建对象。

PostgreSQL 15 增加了对“安全调用者视图”的支持,这些视图使用执行查询用户的权限,而不是创建视图用户的权限。

PostgreSQL 15 中未授权用户现在可以被授予权限,通过 SETALTER SYSTEM 来更改服务器变量。

附加功能

PostgreSQL 15 中还添加了许多其他新功能和改进。其中许多也可能对您的用例有所帮助。请参阅发行说明以获取新功能和更改功能的完整列表。

https://postgresql.ac.cn/docs/15/release-15.html

测试 Bug 和兼容性

每个 PostgreSQL 版本的稳定性在很大程度上取决于您——社区——在 PostgreSQL 15 正式发布之前,使用您的工作负载和测试工具来测试即将发布的版本,以发现 bug 和回归。由于这是一个 Beta 版本,数据库行为、功能细节和 API 仍有可能发生细微更改。您的反馈和测试将有助于确定新功能的最终调整,因此请尽快进行测试。用户测试的质量有助于确定我们何时可以发布最终版本。

公开的未完成事项列表可以在 PostgreSQL Wiki 中找到。您可以使用 PostgreSQL 网站上的此表单报告 bug

https://postgresql.ac.cn/account/submitbug/

Beta 时间表

这是 15 版本发布的第一个 Beta 版本。PostgreSQL 项目将在需要进行测试时发布额外的 Beta 版本,随后发布一个或多个 Release Candidate 版本,直至 2022 年末的最终发布。有关更多信息,请参阅Beta 测试页面。

链接