Postgresql 16 的第一个测试版现已可供下载。此版本包含 Postgresql 16 的所有功能预览,但 beta 版本的某些细节可能会在测试期间发生变化。
以下为 Postgresql 16 beta 1 主要功能亮点:
性能优化
此版本为 x86 和 ARM 架构引入了对使用 SIMD 的 cpu 加速的支持,包括对处理 ASCII 和 JSON 字符串以及数组和子事务搜索的优化。此外,Postgresql 16 还为 Postgresql 的客户端库 libpq 引入了负载平衡。
Postgresql 16 包括查询执行方面的性能改进。此版本增加了更多查询并行性,包括允许并行执行 FULL 和 RIGHT 联接,以及并行执行 string_agg 和 array_agg 聚合函数。
Postgresql 16 可以在 SELECT disTINCT 查询中使用增量排序。还有一些针对窗口查询的优化, RANGE 和 LIST 分区查找的改进,以及对 RIGHT 和 OUTER 查询中“反连接”的支持。
Postgresql 16 还可以将使用 copY 并发批量加载数据的性能提高高达 300%。
逻辑复制增强
逻辑复制让 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) 存储。
监控与管理
添加了几个新的监控功能,包括提供有关 I/O 统计信息的新 pg_stat_io 视图。此版本还提供了最后一次扫描表或索引的时间戳。用于 pg_stat_activity 的归一化算法也有改进。
此版本包括对页面冻结策略的改进,这有助于提高清理和其他维护操作的性能。
改进了对文本排序规则的一般支持,它提供了文本排序方式的规则。
Postgresql 16 将 ICU 设置为默认排序规则提供程序,还添加了对预定义的 unicode 和 ucs_basic 排序规则的支持。
Postgresql 16 为 pg_dump 添加了额外的压缩选项,包括对 lz4 和 zstd 压缩的支持。
其他变化
Postgresql 16 删除了 promote_trigger_file 选项以启用对备用数据库的提升。
Postgresql 16 引入了 Meson 构建系统,最终将取代 Autoconf。
启用 DirectIO 的开发人员标志,以及在订阅者中指定 origin=none 时使用逻辑复制在两个表之间进行双向复制的能力。
Postgresql 16 现在支持最低版本的 Windows 10。
Postgresql 16 beta 下载地址 | 发布公告,可在文档中查看 Postgresql 16 的所有新功能。