PostgreSQL 16新特性预览

PostgreSQL 全球开发组于 2023-05-25 发布了 PostgreSQL 16 的第一个 beta 版本,可以下载试用。虽然细节可能会有所改变,但是该版本包含了 PostgreSQL 16 最终正式版中所有新特性的预览,让我们赶紧一睹为快吧!

性能改进

PostgreSQL 16 改进了查询执行时的性能,支持更多的并行查询,包括外连接和全连接查询的并行执行,以及聚合函数 string_agg 和 array_agg 的并行支持。除此之外,PostgreSQL 16 实现了 SELECT DISTINCT 查询的增量排序。同时,该版本还优化了窗口函数查询,改进了 RANGE 和 LIST 分区查找,并且支 RIGHT、OUTER 查询中的反连接。

PostgreSQL 16 同时改进了使用 COPY 命令并发批量加载数据的性能,效率提高到了 300%。

新版本还引入了基于 SIMD(单指令流多数据流)技术的 CPU(包括 x86 和 ARM 架构)加速,可以优化 ASCII 字符串和 JSON 字符串处理,以及数组和子事务搜索。另外,PostgreSQL 16 还为 libpq 增加了负载均衡功能。

逻辑复制

逻辑复制可以将 PostgreSQL 数据传输到其他 PostgreSQL 服务器,或者传输到实现了逻辑协议的外部系统。在 PostgreSQL 16 之前,用户只能在主节点创建逻辑复制的发布者。新版本增加了在备节点执行逻辑解码的功能,因此给复制带来了更多选项,例如使用压力更小的备节点作为复制源。

PostgreSQL 16 还提高了逻辑复制的性能,包括订阅者并行应用大型事务,使用索引而不是主键执行 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(代表 5432)。

新版本还增加了 psql 客户端的扩展查询协议,用户可以执行类似 SELECT $1 + $2 的查询,并且使用 \bind 命令替换查询中的变量。

安全增强

PostgreSQL 16 增加了一些预定义的角色,可以给用于授予某些特定功能权限,而不需要授权超级用户特权。新角色包括 pg_maintain,可以执行 VACUUM、ANALYZE、REINDEX 等维护操作;以及 pg_create_subscription,可以创建逻辑复制订阅。另外,从该版本开始,逻辑复制订阅者将会作为表的拥有者执行相关事务,不再以 superuser 作为拥有者执行事务。

PostgreSQL 16 支持在 pg_hba.conf 和 pg_ident.conf 文件中使用正则表达式匹配用户名和数据库名。另外,新版本还支持在这两个文件中引用其他文件。

PostgreSQL 16 还增加了 SQL 标准中的 SYSTEM_USER 关键字,可以用于返回建立会话的用户名和认证方法。

PostgreSQL 16 还支持 Kerberos 证书委托,允许扩展插件(例如 postgres_fdw 和 dblink)使用已验证的凭据连接到其他服务。该版本增加了几个新的面向安全的客户端连接参数,包括 require_auth,用于指定客户端可以接受的服务器认证方法。用户现在可以将 sslrootcert 设置为 system,表示使用客户端操作系统提供的CA 证书存储。

监控管理

PostgreSQL 16 增加了一些新的监控功能,包括提供 I/O 统计信息的 pg_stat_io 视图。该版本还提供了表或者索引最后一次扫描的时间戳,同时改进了 pg_stat_activity 使用的归一化算法。

新版本还改进了页面冻结策略,可以提高 VACUUM 和其他维护操作的性能。

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 还增加了其他大量的新功能和改进,完整的新特性列表可以参考官方的发行说明

我们会在后续文章中针对这些新特性具体进行介绍和分析,欢迎关注❤️、评论📝、点赞👍!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不剪发的Tony老师

为 5 个 C 币而折腰。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值