PostgreSQL 17 Beta 1
PostgreSQL 17 发布了首个 Beta 版本,主要变化包括提升查询和操作性能、增强分区和分布式工作负载、改进开发者体验以及增加安全功能。
查询和写入性能改善
PostgreSQL 17 最近的版本与构建,持续致力于整体的系统性能优化。负责回收存储空间的 PostgreSQLVacuum 进程使用了新的内部数据结构,使得垃圾回收过程的内存使用减少,最高可以减少 20 倍,同时减少了执行所需的时间。此外 Vacuum 进程不再受到 1GB
内存的使用限制,而由 maintenance_work_mem
来控制,这意味着您可以为 Vacuum 进程分配更多资源。
这个版本引入了流式 I/O 接口,使得执行顺序扫描和运行 ANALYZE
的性能有所提高。PostgreSQL 17 还新增了配置参数,可控制 事务、子事务和 multixact 缓冲区的大小。
PostgreSQL 17 现在可以同时利用 Planner 的统计信息与 公共表表达式 CTE(即 WITH
查询)结果中的排序顺序,进一步优化这些查询的速度。此外,这个版本显著提高了带有 IN
子句的查询,在使用 B-tree 索引 时的查询执行时间。
从这个版本开始,对于那些带有 NOT NULL
约束的列,如果查询中带有冗余的 IS NOT NULL
语句,PostgreSQL 会直接把它优化掉,同理,那些带有 IS NULL
的查询也会直接优化掉,PostgreSQL 17 还支持并行构建 BRIN 索引。
高并发写入类的工作负载,可以显著受益于 PostgreSQL 17 的预写日志(WAL)锁管理改进,测试显示,性能提升 最多高达两倍。
最后,PostgreSQL 17 添加了更多显式的 SIMD 指令,比如为 bit_count
函数启用 AVX-512 指令支持。
分区和分布式工作负载增强
PostgreSQL 17 的分区管理更为灵活,新增了拆分与合并分区的能力,并允许分区表使用 身份列(Identity Column) 和排它约束(Exclude Constraints)。此外,PostgreSQL 外部数据包装器(postgres_fdw
)现在可以将 EXISTS
和 IN
子查询下推到远端服务器,从而提升性能。
PostgreSQL 17 为逻辑复制添加了新功能,使其在高可用架构和大版本升级中更加易用。从 PostgreSQL 17 使用 pg_upgrade
升级到更高版本时,不再需要删除 逻辑复制槽了,从而避免了升级后需要重新同步数据的麻烦。
此外,你还可以控制逻辑复制的 Failover 过程,为高可用性架构中管理 PostgreSQL 提供了更好的可控制性。PostgreSQL 17 还允许逻辑复制的订阅者使用 hash
索引进行查找,并引入了 pg_createsubscriber
命令行工具,用于在使用物理复制的副本从库上创建逻辑复制。
开发者体验
PostgreSQL 17 继续深化了对 SQL/JSON 标准的支持,新增了 JSON_TABLE
功能,可以将 JSON 转换为标准的 PostgreSQL 表,以及 SQL/JSON 构造函数(JSON
、JSON_SCALAR
、JSON_SERIALIZE
)和查询函数(JSON_EXISTS
、JSON_QUERY
、JSON_VALUE
)。值得注意的是,这些功能最初计划在 PostgreSQL 15 中发布,但出于设计权衡考虑,在 Beta 期间被撤回 —— 这也是我们希望请您在 Beta 期间帮忙测试新功能的原因之一!此外,PostgreSQL 17 为 jsonpath
的实现增添了更多功能,包括将 JSON 类型的值转换为各种不同特定数据类型的能力。
MERGE
命令现在支持 RETURNING
子句了,让您可以在同一条命令中进一步处理修改过的行。您还可以使用新的 merge_action
函数查看 MERGE
命令修改了哪一部分。PostgreSQL 17 还允许使用 MERGE
命令更新视图,并新增了 WHEN NOT MATCHED BY SOURCE
子句,允许用户指定当源中的行没有任何匹配时,应该执行什么操作。
COPY
命令用于高效地从 PostgreSQL 批量加载与导出数据。在 PostgreSQL 17 中,导出大行时的性能最多有两倍的提升。此外,当源编码与目标编码相匹配时,COPY
的性能也有所提升。COPY 新增了一个 ON_ERROR
选项,即使插入行时出现错误也可继续进行。此外在 PostgreSQL 17 中,驱动程序可以利用 libpq API 使用 异步和更为安全的查询取消方法。
PostgreSQL 17 引入了内置的排序规则提供程序,该提供程序提供与 C
排序规则类似的排序语义,但编码为 UTF-8
而非 SQL_ASCII
。这种新的排序规则提供了不变性保证,确保您的排序结果在不同系统上都不会改变。
安全功能
PostgreSQL 17 新增了一个新的连接参数 sslnegotation
,允许 PostgreSQL 在使用 ALPN 时直接进行 TLS 握手,减少一次网络往返。PostgreSQL 会在 ALPN 目录中注册为 postgresql
。
这个版本引入了新的 EventTrigger 事件 —— 当用户认证时触发。并且在 libpq 中提供了一个新的名为 PQchangePassword
的 API,可以在客户端侧自动对密码取哈希,以防止在服务器中意外记录下明文密码。
PostgreSQL 17 增加了一个新的 预定义角色,名为 pg_maintain
,赋予用户执行 VACUUM
、ANALYZE
、CLUSTER
、REFRESH MATERIALIZED VIEW
、REINDEX
和 LOCK TABLE
的权限, 并确保 search_path
对于 VACUUM
、ANALYZE
、CLUSTER
、REFRESH MATERIALIZED VIEW
和 INDEX
等维护操作是安全的。最后,用户现在可以使用 ALTER SYSTEM
来设置系统无法识别的未定义配置参数了。
备份与导出管理
PostgreSQL 17 可以使用 pg_basebackup
进行增量备份,并增加了一个新的实用工具 pg_combinebackup
,用于备份恢复过程中将备份合并。该版本为 pg_dump
新增了一个参数项 --filter
,允许您指定一个文件来进一步指定在 dump 过程中要包含或排除哪些对象。
监控
EXPLAIN
命令可以提供有关查询计划和执行详情的信息,现在它新增了两个选项:SERIALIZE
会显示将数据序列化为网络传输形式时的耗时;MEMORY
会报告优化器内存使用情况。此外,EXPLAIN
现在还可以显示花费在 I/O 块读写上的时间。
PostgreSQL 17 标准化了 pg_stat_statements
中 CALL
的参数,减少了频繁调用的存储过程所产生的记录数量。此外,VACUUM
进度报告现在会显示索引垃圾回收的进度。PostgreSQL 17 还引入了一个新视图,pg_wait_events
,提供关于等待事件的描述,可以与 pg_stat_activity
共同使用,以便深入了解活动会话出现等待的原因。
此外,pg_stat_bgwriter
视图中的一些信息,现在被拆分到新的 pg_stat_checkpointer
视图中了。
其他功能
PostgreSQL 17 还有许多其他新功能与改进,很多改进都可能会对您的用例有所帮助。请参阅发布说明以获取完整的新功能和变更列表:
https://www.postgresql.org/docs/17/release-17.html
Beta 时间表
这是 PostgreSQL 17 的第一个 Beta 版本。PostgreSQL 项目将根据测试需要发布更多的 Beta 版本,随后是一或多个 RC 版本,最终版本大约会在 2024 年 9 月或 10 月发布。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
ModStartCMS v8.4.0 框架稳定性持续迭代,修复部分已知问题
ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市场,后台一键快速安装 会员模块通用且完整,支持完整的API调用 大文件分片上传,进度条显示,已上传文件管理 强大的模块扩展功能,所有模块可以无缝集成,支持在线安装、卸载模块 完善的开发助手,实现模块、主题的的一键创建 完善的后台权限管理,支持基于RBAC的权限管理系统 后台管理支持使用手机、平板、PC,无论何时何地都可方便管理 第三方登录(QQ、微信、微博、支付宝、微信小程序) 第三方支付支持(微信、支付宝、支付宝当面付、微信扫码、微信小程序) 第三方云存储支持,支持云储存分片上传(阿里云、百度云、华为云、腾讯云、FTP、七牛云、UCloud、又拍云) 第三方短信支持(阿里云、腾讯云、华为云、百度云、253云通讯、聚合、七牛云、融云、赛邮、UCloud、云片、网易云) V8.4.0版本更新 2024年05月23日ModStartCMS发布v8...
- 下一篇
Rufus 4.5 发布,USB 启动盘制作工具
Rufus 4.5 现已发布,更新内容如下: 添加新的高级选项以对 suitable images 执行运行时 UEFI 媒体验证(Windows,大多数 Linux) 将使用 Rufus MBR高级选项移至cheat mode (Alt-A) 修复 VHDX images 截断以及写入 VHD/VHDX 时的benign error message 修复某些配置中对 Linux 持久性的支持(Mint、Ubuntu 24.04) 修复多个潜在漏洞 将internal GRUB 更新至版本 2.12 将 UEFI:NTFS更新至最新版本(现在始终使用ntfs-3g驱动程序,而不是存在漏洞的 AMI NTFS 驱动程序) 复制 ISO 文件时增加缓冲区大小,以尽量减少 AMI NTFS UEFI 驱动程序错误 改进分区创建处理 当unattend.xml冲突已经存在时,不要显示 WUE 对话框 详情可查看:https://rufus.ie/zh/ Rufus 是一款格式化和创建 USB 启动盘的辅助工具,适用于以下场景: 需要将可引导 ISO (Windows、Linux、UEFI 等)...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题