PostgreSQL 17正式发布!全面提升性能与开发体验

文摘   2024-09-28 10:00   美国  

作者:桦仔 

10余年DBA工作经验,

微信:debolop

QQ交流群:740052625

公众号:数据库实战派


PostgreSQL 的主要版本发布时间如下

各个大版本的主要功能比较

2024年9月26日,PGDG正式发布了备受期待的PostgreSQL 17 GA版本。PostgreSQL 17建立在数十年的开源开发基础上,继续在性能、可扩展性和可靠性方面进行全方位提升,为关键数据存储和管理提供更优异的解决方案。

新版本的PostgreSQL提供了显著的整体性能提升,涵盖了

  • 内存管理
  • 存储访问
  • 并发workload优化
  • 批量import和export操作
  • 查询索引的加速

对于开发者DBA来说,PostgreSQL 17带来了更强大的新特性和改进,包括

  • 全新的SQL/JSON支持
  • 更简化的高可用性逻辑复制管理
  • 无缝的版本升级体验。

系统范围的性能提升

在死元组清理方面,vacuum进程作为数据库维护的核心功能得到了重大改进。新版本引入了一个优化的vacuum内存管理结构,使内存消耗降低了20倍。这一改进不仅显著提升了vacuum的速度,同时减少了对共享资源的占用,使数据库能够更好地处理高并发工作负载。对于大量更新或删除操作的数据库,这一改进能够有效减轻系统压力。

在I/O性能方面也有显著提升。预写日志(WAL)处理的优化使得并发写入吞吐量提升了2倍,尤其在高并发环境中表现更加优异。此外,新的流式I/O接口加快了顺序扫描和ANALYZE统计信息更新的速度,进一步提升了性能。

在查询加速方面,B+树索引的优化提高了查询效率,并且可以对BRIN索引进行并行创建,大大缩短了索引构建时间。新增的SIMD指令支持,包括使用AVX-512优化的bit_count函数,也为高性能计算场景提供了额外的加速能力。

改善开发人员体验

作为最早引入JSON支持的关系型数据库,PostgreSQL在JSON处理上一直走在前列。新版本扩展了对SQL/JSON标准的支持,引入了JSON_TABLE,让开发者能够更方便地将JSON数据转化为标准表结构进行处理。这为开发人员提供了与JSON数据交互的另一种方式,使得处理复杂的JSON数据变得更加高效。

此外,还增加了更多的jsonpath表达式,支持将JSON数据转换为PostgreSQL的原生数据类型,如numeric、boolean、string和date/time类型。开发人员在处理JSON时,能够更加灵活地利用这些表达式进行复杂的数据操作,真正做到了json数据和关系型数据融为一体。

MERGE语句的进一步扩展,使开发人员在处理条件更新时更加灵活。而批量加载和导出的改进,使得使用COPY命令进行大规模数据导入时性能提升高达3倍,这对于大数据场景下的数据迁移和批量处理尤为重要。

新版本还对分区表进行了增强,支持在分区表中使用标识列和约束,并通过postgres_fdw将子查询推送到远程服务器,以实现跨数据库的高效数据处理。

逻辑复制增强功能

逻辑复制是实时数据同步场景中的关键功能。此前,执行主要大版本升级时,用户需要删除逻辑复制槽,导致升级后需要重新同步数据。而在新版本中,逻辑复制槽可以在升级过程中保留,极大简化了升级流程,减少了停机时间。

另外,官方还引入了用于逻辑复制的故障转移控制,使得高可用性环境下的部署更具弹性和容错性。此外,新增的pg_createsubscriber命令行工具,可以将物理副本转换为逻辑副本,极大提升了逻辑复制的管理灵活性。

安全性和操作性的更多选项

安全性方面,新版本继续扩展了用户管理数据库的能力。新增的TLS选项允许用户在使用ALPN时进行直接的TLS握手,提升了数据库连接的安全性和兼容性。此外,新版本还引入了新的预定义角色pg_maintain,为用户赋予数据库维护操作的权限。

在备份与恢复方面,pg_basebackup现在支持增量备份,并引入了新的pg_combinebackup工具,用于重建完整备份。pg_dump也增加了新的选项--filter,允许用户选择备份文件中包含哪些对象,使备份过程更加灵活和高效。

在监控和分析上,新版本增强了EXPLAIN命令的功能,能够显示本地I/O块读取和写入所花费的时间。此外,新增的pg_wait_events视图,结合pg_stat_activity视图,可以帮助用户深入了解活动会话的等待原因,从而优化数据库性能。

其他功能和改进

除了以上关键功能,新版本还引入了许多其他新功能和改进。新增了内置的、独立于平台的不可变排序规则程序,这对于处理跨区域和不同语言环境下的数据排序提供了更好的支持。



参考文章

https://www.postgresql.org/docs/17/release-17.html

https://www.postgresql.org/about/news/postgresql-17-released-2936/

https://www.oschina.net/news/313741/postgresql-17-released

加入我们的微信群,与我们一起探讨数据库技术,以及SQL Server、 MySQL、PostgreSQL、MongoDB 的相关话题。

微信群仅供学习交流使用,没有任何广告或商业活动。

数据库实战派
泰莱大学人工智能专业硕士,专注数据库技术解析,涵盖主流数据库的优化、运维与开发技巧。分享最新技术趋势、实用工具和最佳实践,助力从业者提升专业能力。
 最新文章