图多尔·戈卢本科:深入探索Postgres 18的新功能

图多尔·戈卢本科:深入探索Postgres 18的新功能

💡 原文英文,约4100词,阅读约需15分钟。
📝

内容提要

Postgres 18已稳定发布,新增异步IO、OAuth 2.0支持及UUIDv7等功能,性能优化包括btree跳过扫描,简化开发者操作。升级过程简单,影响较小,适合开发者和运维人员。

🎯

关键要点

  • Postgres 18已稳定发布,新增异步IO、OAuth 2.0支持及UUIDv7等功能。

  • 性能优化包括btree跳过扫描,简化开发者操作。

  • 升级过程简单,影响较小,适合开发者和运维人员。

  • 异步IO提供更直接的IO请求控制,支持直接IO,提升性能。

  • OAuth 2.0支持提供安全的身份验证方式,避免使用长期密码。

  • UUIDv7提供可排序的UUID,解决了UUIDv4的性能问题。

  • RETURNING子句支持返回旧值和新值,简化开发者操作。

  • 新增虚拟生成列,计算在读取时,默认设置为虚拟。

  • 支持逻辑复制生成列,增强CDC工具的功能。

  • 时间数据库改进,支持主键和唯一约束的WITHOUT OVERLAPS子句。

  • 新增NOT VALID约束,允许在不验证现有行的情况下添加约束。

  • 支持在分区表上声明NOT VALID外键约束,减少锁定。

  • 新协议版本3.2,增强查询取消的密钥长度。

  • pg_upgrade速度更快,转移统计信息减少升级后性能损失。

  • K8s环境中扩展管理更容易,支持声明式扩展管理。

  • VACUUM改进,降低了激进VACUUM的成本。

  • EXPLAIN改进,默认显示BUFFERS,提供更多查询信息。

  • 新增每个进程的统计信息,增强监控能力。

  • 索引优化,btree跳过扫描提升查询效率。

  • SQL语言函数使用计划缓存,提升查询性能。

  • 自连接消除优化,减少冗余,提高查询效率。

  • DISTINCT值重新排序,减少排序开销。

  • 新增casefold()函数,改进大小写匹配。

  • lower()和upper()函数实现更快,优化了映射表。

  • GiST索引构建速度更快,支持排序构建模式。

  • 新增数组便利函数array_reverse()和array_sort()。

  • json_strip_nulls()函数新增参数,移除null数组元素。

🔎

延伸解读

异步IO的潜力与局限

Postgres 18引入的异步IO(AIO)为数据库性能提升提供了新的可能性,尤其是在高并发环境下。然而,目前AIO的应用场景仍有限,开发者在使用时需谨慎评估其实际效果,避免对性能的过高期望。

OAuth 2.0的安全性提升

Postgres 18支持OAuth 2.0,提供了一种更安全的身份验证方式,减少了对长期密码的依赖。这一变化不仅提升了安全性,也为应用程序的集成提供了便利,开发者应考虑在新项目中优先采用这一认证方式。

UUIDv7的优势与应用

UUIDv7的引入解决了UUIDv4在索引局部性和压缩性能上的不足,使得生成的UUID更具可排序性。开发者在设计数据库时,可以考虑使用UUIDv7来优化性能,尤其是在需要高效索引的场景中。

延伸问答

Postgres 18的新功能有哪些?

Postgres 18新增了异步IO、OAuth 2.0支持、UUIDv7、btree跳过扫描等功能。

异步IO在Postgres 18中有什么优势?

异步IO提供更直接的IO请求控制和支持直接IO,提升性能和降低资源使用。

UUIDv7相较于UUIDv4有什么改进?

UUIDv7是可排序的,解决了UUIDv4在索引局部性和压缩性能上的问题。

如何在Postgres 18中使用OAuth 2.0进行身份验证?

可以通过SSO提供商进行交互式访问,应用程序可使用OAuth工作流进行身份验证。

Postgres 18的升级过程复杂吗?

升级过程简单,影响较小,适合开发者和运维人员。

Postgres 18中如何优化VACUUM操作?

Postgres 18通过提前扫描可见页面和调整插入阈值来降低激进VACUUM的成本。

🏷️

标签

➡️

继续阅读