原本被寄予厚望的64位xid,因提交的patch多少不是非常完美,最后修订版的提交日期为5.13,考虑各种时间问题。该特性被推迟到16版本。

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​​。

LightDB Enterprise Postgres将于22.3版本大约为10月初正式升级到PostgreSQL 15,并发布预览版,到23.1,正式发布13.3-23.1和15.2-23.1 GA版本。

​LightDB Enterprise Postgres--金融级关系型数据库,更快、更稳、更懂金融!​