PostgreSQL 全球开发组宣布,PostgreSQL 15 的第一个 Beta 版本现在可以下载了。此版本包含 PostgreSQL 15 正式发布时将提供的所有功能的预览,尽管在 Beta 期间,发布的某些细节可能会发生变化。
您可以在发行说明中找到有关 PostgreSQL 15 中所有功能和更改的信息
https://postgresql.ac.cn/docs/15/release-15.html
本着开源 PostgreSQL 社区的精神,我们强烈建议您在自己的系统上测试 PostgreSQL 15 的新功能,以帮助我们消除可能存在的错误或其他问题。虽然我们不建议您在生产环境中使用 PostgreSQL 15 Beta 1,但我们鼓励您找到方法针对此 Beta 版本运行您典型的应用程序工作负载。
您的测试和反馈将帮助社区确保 PostgreSQL 15 版本坚持我们交付世界上最先进的开源关系数据库的稳定、可靠版本的标准。请阅读更多关于我们的 Beta 测试过程以及如何做出贡献的信息
https://postgresql.ac.cn/developer/beta/
PostgreSQL 15 添加了新功能,以简化和增强开发者体验。
此版本引入了MERGE
,这是一个用于有条件地对数据执行写入操作(INSERT
、UPDATE
或 DELETE
)的 SQL 标准命令。在此版本之前,可以通过使用存储过程或在有限的基础上使用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_count
、regexp_instr
、regexp_like
和 regexp_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 在 PostgreSQL 集群中创建数据库时引入了新的默认设置。创建新数据库时,数据库所有者(由pg_database_owner
表示)和超级用户之外的用户不再能在默认的 public
模式中创建对象。
PostgreSQL 15 添加了对“安全调用者视图”的支持,该视图使用执行查询的用户的权限,而不是创建视图的用户的权限。
PostgreSQL 15 中没有特权的的用户现在可以被授予特权,通过 SET
和 ALTER SYSTEM
来更改服务器变量。
PostgreSQL 15 中添加了许多其他新功能和改进。其中许多也可能对您的用例有所帮助。请参阅发行说明,以获取新增和更改功能的完整列表
https://postgresql.ac.cn/docs/15/release-15.html
每个 PostgreSQL 版本的稳定性在很大程度上取决于您(社区)使用您的工作负载和测试工具测试即将推出的版本,以便在 PostgreSQL 15 正式发布之前找到错误和回归。由于这是一个 Beta 版本,数据库行为、功能细节和 API 的细微更改仍然是可能的。您的反馈和测试将有助于确定新功能的最终调整,因此请在近期进行测试。用户测试的质量有助于确定我们何时可以发布最终版本。
未解决的问题列表在 PostgreSQL wiki 中公开提供。您可以使用 PostgreSQL 网站上的此表单报告错误
https://postgresql.ac.cn/account/submitbug/
这是 15 版本的第一个 beta 测试版。PostgreSQL 项目将根据测试需要发布额外的 beta 测试版,随后发布一个或多个候选版本,直到 2022 年底最终发布。更多信息请访问 Beta 测试页面。