PostgreSQL 15 的第一个 beta 版本现已可供下载。公告指出,此版本包含 PostgreSQL 15 普遍可用时将提供的所有功能的预览,但该版本的某些细节可能会在测试期间发生变化。
本着开源 PostgreSQL 社区的精神,官方建议用户在系统上测试 PostgreSQL 15 的新功能,以帮助消除可能存在的错误或其他问题。虽然不建议用户在生产环境中运行 PostgreSQL 15 Beta 1,但其鼓励用户找到针对此 Beta 版本运行典型应用程序工作负载的方法。“您的测试和反馈将帮助社区确保 PostgreSQL 15 版本符合我们提供世界上最先进的开源关系数据库的稳定、可靠版本的标准”。详情可查看此处。
PostgreSQL 15 功能亮点
开发者体验
PostgreSQL 15 添加了用于简化和增强开发人员体验的新功能。此版本引入了MERGE
,这是一个 SQL 标准命令,用于有条件地对数据执行写操作(INSERT
、UPDATE
或DELETE
)。在此版本之前,同样的行为可以使用存储过程或在有限的基础上使用 INSERT ... ON CONFLICT
来完成。“使用 PostgreSQL 15,开发人员可以编写简单、富有表现力的查询来选择要采取的适当数据修改操作。”
作为 9.2 版本的一部分,PostgreSQL 在 2012 年曾增加了对 JSON 的支持。五年后发布的 SQL/JSON 标准指定了用于访问和操作存储在关系数据库中的 JSON 数据的各种接口。PostgreSQL 15 在其现有的对 SQL/JSON 路径语言的支持的基础上,加入了更多标准的 SQL/JSON 函数。其中包括 SQL/JSON 构造函数、查询/自省函数,以及将 JSON 数据转换成 table 的能力。
PostgreSQL 15 增加了更多的正则表达式函数,包括regexp_count
, regexp_instr
, regexp_like
, 和regexp_substr
。range_agg
函数在 PostgreSQL 15 中引入,用于将 range
数据类型聚合为multirange
类型,现在也支持聚合multirange
类型。
Performance
PostgreSQL 15 包括对较大数据集进行排序时对数据进行排序的显着加速,特别是超过work_mem
参数的数据集。
PostgreSQL 15 的性能提升还扩展到了各种查询类型。包括为SELECT DISTINCT
语句引入并行化,以及对使用 row_number()、rank() 和 count() 的 window functions 的性能改进。使用 PostgreSQL 外部数据包装器postgres_fdw
来管理远程 PostgreSQL 服务器上的数据的应用程序,现在可以使 transactions 以并行方式提交。对于涉及带有分区的表的查询,也一些性能增强。
用于存储大于单页 (8kB) 的数据的 PostgreSQL 系统和 TOAST tables 现在可以利用利用重复索引,并从更小的索引和更快的查找中获益。
用于批量加载数据的 psql copy 命令在 PostgreSQL 15 中也有性能改进。
Backups、Archiving 和 Compression
PostgreSQL 15 为各种组件增加了对 Zstandard(zstd)压缩的支持。pg_basebackup
,一个用于对 PostgreSQL 集群进行完整备份的实用程序,现在支持使用 Gzip、LZ4 或 Zstandard 压缩的服务器端压缩。pg_basebackup
客户端现在还可以解压缩使用 LZ4 和 Zstandard 压缩的备份。
Write-ahead log (WAL) 文件现在可以通过wal_compression
配置参数使用 LZ4 和 Zstandard 压缩法进行压缩。此外,PostgreSQL 15 还添加了recovery_prefetch
选项,可以通过预取数据块来帮助加快恢复操作。此版本添加了一个叫做pg_walinspect
的新模块,让你可以直接从 SQL 检查有关 WAL 文件的信息。
PostgreSQL 15 允许你通过指定一个archive_library
来执行 WAL 归档,而不需要运行 shell 命令。可以在basic_archive
模块中找到示例 WAL 归档库。此外,扩展现在可以定义自己的 WAL 资源管理器,让他们与逻辑复制一起使用。
Logical Replication
PostgreSQL 15 为逻辑复制引入了 row filtering 和 column filtering 。此外,用户现在可以方便地指定发布模式中的所有 tables,而以前只能对数据库中的所有 tables 执行此操作。
此版本还增加了对处理冲突的更多支持。用户现在可以指定disable_on_error
,以便在发生错误时自动停止逻辑复制。PostgreSQL 15 可以使用 ALTER SUBSCRIPTION ... SKIP
命令跳过 applying changes。
Administration
PostgreSQL 15 引入了 jsonlog
日志格式。这允许 PostgreSQL 日志被许多执行结构化日志聚合和分析的程序使用。PostgreSQL 15 现在默认记录缓慢的 checkpoints 和 autovacuum operations。
psql
客户端现在有一个dconfig
命令,用于检查配置参数的值。默认情况下,dconfig
显示任何未设置为其默认值的配置参数。
PostgreSQL 15 现在将所有服务器级别的统计信息存储在共享内存中。服务器不再运行 statistics collector process。
ALTER TABLE
命令现在可以修改 table 的ACCESS METHOD
,用于设置 table 使用的存储系统。
Security
PostgreSQL 15 在 PostgreSQL 集群中创建数据库时引入了新的默认值。创建新数据库时,数据库所有者之外的用户(由pg_database_owner
表示)和超级用户不能再在默认public
模式中创建对象。
PostgreSQL 15 增加了对“security invoker views”的支持,它使用执行查询的用户而不是创建视图的用户的权限。
PostgreSQL 15 中的非特权用户现在可以通过SET
和ALTER SYSTEM
被授予更改服务器变量的特权。
有关新功能和更改功能的完整列表可查看 release notes。