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 还增加了其他大量的新功能和改进,完整的新特性列表可以参考官方的发行说明。文章来源:https://www.toymoban.com/news/detail-464367.html
我们会在后续文章中针对这些新特性具体进行介绍和分析,欢迎关注❤️、评论📝、点赞👍!文章来源地址https://www.toymoban.com/news/detail-464367.html
到了这里,关于PostgreSQL 16新特性预览的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!