PostgreSQL 全球开发组宣布 PostgreSQL 16 的第一个 beta 版本现在已可供下载。此版本包含 PostgreSQL 16 正式发布时将提供的所有功能的预览,但发布的一些细节可能会在 beta 期间发生变化。
您可以在发行说明中找到有关 PostgreSQL 16 中所有功能和更改的信息
https://postgres.ac.cn/docs/16/release-16.html
本着开源 PostgreSQL 社区的精神,我们强烈建议您在您的系统上测试 PostgreSQL 16 的新功能,以帮助我们消除可能存在的错误或其他问题。虽然我们不建议您在生产环境中运行 PostgreSQL 16 Beta 1,但我们鼓励您找到方法针对此 beta 版本运行您的典型应用程序工作负载。
您的测试和反馈将帮助社区确保 PostgreSQL 16 版本坚持我们交付世界上最先进的开源关系数据库的稳定、可靠版本的标准。请阅读更多关于我们的beta 测试过程以及您如何做出贡献的信息
https://postgres.ac.cn/developer/beta/
PostgreSQL 16 包括查询执行方面的性能改进。此版本增加了更多的查询并行性,包括允许 FULL
和 RIGHT
连接并行执行,以及并行执行 string_agg
和 array_agg
聚合函数。此外,PostgreSQL 16 可以在 SELECT DISTINCT
查询中使用增量排序。对于窗口查询也有一些优化,改进了 RANGE
和 LIST
分区的查找,并支持 RIGHT
和 OUTER
查询中的“反连接”。
PostgreSQL 16 还可以使用COPY
将并发批量加载数据的性能提高高达 300%。
此版本还引入了使用 SIMD 进行 CPU 加速的支持,适用于 x86 和 ARM 架构,包括对处理 ASCII 和 JSON 字符串以及数组和子事务搜索的优化。此外,PostgreSQL 16 还为 PostgreSQL 的客户端库 libpq 引入了负载平衡。
逻辑复制允许 PostgreSQL 用户将数据实时流式传输到其他 PostgreSQL 或其他实现逻辑协议的外部系统。在 PostgreSQL 16 之前,用户只能在主实例上创建逻辑复制发布者。PostgreSQL 16 添加了在备用实例上执行逻辑解码的能力,为用户提供了更多分配工作负载的选项,例如,使用比主实例空闲的备用实例进行逻辑复制更改。
PostgreSQL 16 还包括对逻辑复制的几项性能改进。这包括允许订阅者并行应用大型事务,使用除 PRIMARY KEY
之外的索引在 UPDATE
或 DELETE
操作期间执行查找,并允许在初始化期间使用二进制格式复制表。
PostgreSQL 16 继续实现用于操作JSON数据的 SQL/JSON 标准,包括支持 SQL/JSON 构造函数(例如 JSON_ARRAY()
、JSON_ARRAYAGG()
等)和身份函数 (IS JSON
)。此版本还添加了 SQL 标准 ANY_VALUE
聚合函数,该函数返回聚合集中任何任意值。为了方便起见,PostgreSQL 16 现在允许您指定非十进制整数文字,例如 0xff
、0o777
和 0b101010
,并使用下划线作为千位分隔符,例如 5_432
。
此版本为 psql
客户端添加了对扩展查询协议的支持。用户可以执行查询,例如 SELECT $1 + $2
,并使用 \bind
命令来替换变量。
PostgreSQL 16 继续为用户提供授予功能特权访问权限的能力,而无需使用新的预定义角色的超级用户。这些角色包括 pg_maintain
,它可以执行 VACUUM
、ANALYZE
、REINDEX
等操作,以及 pg_create_subscription
,它允许用户创建逻辑复制订阅。此外,从此版本开始,逻辑复制订阅者以表所有者的身份而不是超级用户的身份在表上执行事务。
PostgreSQL 16 现在允许您在pg_hba.conf
和 pg_ident.conf
文件中使用正则表达式来匹配用户和数据库名称。此外,PostgreSQL 16 添加了在 pg_hba.conf
和 pg_ident.conf
中包含其他文件的能力。PostgreSQL 16 还添加了对 SQL 标准 SYSTEM_USER
关键字的支持,该关键字返回用于建立会话的用户名和身份验证方法。
PostgreSQL 16 还添加了对 Kerberos 凭据委派的支持,这允许 postgres_fdw
和 dblink
等扩展使用经过身份验证的凭据连接到其他服务。此版本还为客户端添加了几个新的面向安全性的连接参数。这包括 require_auth
,其中客户端可以指定它愿意从服务器接受哪些身份验证方法。您现在可以将 sslrootcert
设置为 system
,以指示 PostgreSQL 使用客户端操作系统提供的可信证书颁发机构 (CA) 存储。
PostgreSQL 16 添加了几个新的监控功能,包括新的 pg_stat_io
视图,该视图提供有关 I/O 统计信息的信息。此版本还为表或索引上次扫描的时间戳提供了时间戳。pg_stat_activity
的标准化算法也得到了改进。
此版本包括对页面冻结策略的改进,这有助于清理和其他维护操作的性能。PostgreSQL 16 还改进了对文本排序规则的通用支持,这些排序规则提供了文本排序规则。PostgreSQL 16 将 ICU 设置为默认排序规则提供程序,还添加了对预定义 unicode
和 ucs_basic
排序规则的支持。
PostgreSQL 16 为 pg_dump
添加了其他压缩选项,包括支持 lz4
和 zstd
压缩。
PostgreSQL 16 删除了 promote_trigger_file
选项以启用备用提升。用户应使用 pg_ctl promote
命令或 pg_promote()
函数来提升备用。
PostgreSQL 16 引入了 Meson 构建系统,它最终将取代 Autoconf。此版本还为将在未来版本中改进的开发功能添加了基础支持。这包括启用 DirectIO 的开发人员标志,以及在订阅者中指定 origin=none
时使用逻辑复制在两个表之间双向复制的能力。
对于 Windows 安装,PostgreSQL 16 现在支持 Windows 10 的最低版本。
PostgreSQL 16 中添加了许多其他新功能和改进。其中许多也可能对您的用例有所帮助。有关新增和更改的功能的完整列表,请参阅发行说明。
https://postgres.ac.cn/docs/16/release-16.html
每个 PostgreSQL 版本的稳定性很大程度上取决于您(社区)使用您的工作负载和测试工具测试即将推出的版本,以便在 PostgreSQL 16 正式发布之前发现错误和回归。由于这是一个 Beta 版,数据库行为、功能详细信息和 API 的细微更改仍然是可能的。您的反馈和测试将有助于确定新功能的最终调整,因此请在不久的将来进行测试。用户测试的质量有助于确定我们何时可以进行最终发布。
PostgreSQL wiki 中公开提供了未解决问题的列表。您可以使用 PostgreSQL 网站上的此表单报告错误。
https://postgres.ac.cn/account/submitbug/
这是版本 16 的第一个 beta 版本。PostgreSQL 项目将根据测试需要发布其他 beta 版本,然后发布一个或多个候选版本,直到 2023 年末的最终版本。有关更多信息,请参阅Beta 测试页面。