内容提要
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的成本。