游侠网云服务,免实名免备案服务器 游侠云域名,免实名免备案域名

统一声明:

1.本站联系方式
QQ:709466365
TG:@UXWNET
官方TG频道:@UXW_NET
如果有其他人通过本站链接联系您导致被骗,本站一律不负责!

2.需要付费搭建请联系站长QQ:709466365 TG:@UXWNET
3.免实名域名注册购买- 游侠云域名
4.免实名国外服务器购买- 游侠网云服务

今日,PostgreSQL 全球开发组宣布发布 PostgreSQL 18,这是全球最先进开源数据库的最新版本。本新闻稿的翻译版本可在 PostgreSQL 18 新闻资料包 中找到。

PostgreSQL 18 通过新的 I/O 子系统提高了所有规模工作负载的性能,该子系统在从存储读取时性能提升高达 3 倍,并且还增加了可以使用索引的查询数量。此版本使主要版本升级更具破坏性,加速了升级时间,并减少了升级完成后达到预期性能所需的时间。开发人员还可以受益于 PostgreSQL 18 的功能,包括在查询时计算值的虚拟生成列,以及对 UUID 具有更好索引和读取性能的数据库友好型 uuidv7() 函数。PostgreSQL 18 通过支持 OAuth 2.0 身份验证,更易于与单点登录 (SSO) 系统集成。

PostgreSQL 核心团队成员 Jonathan Katz 表示:“全球开源社区的努力塑造了每一个 PostgreSQL 版本,并帮助交付满足用户数据所在位置的功能。“PostgreSQL 18 在项目长期、丰富的交付可靠且强大的数据管理体验的历史基础上,继续扩展其支持的工作负载。”

PostgreSQL 是一种创新型数据管理系统,以其可靠性、健壮性和可扩展性而闻名,受益于全球开发者社区近 30 年的开源开发,已成为所有规模组织的优选开源关系数据库。

PostgreSQL 之前依赖于操作系统预读机制来加速数据检索。然而,由于操作系统缺乏对数据库特定访问模式的洞察,它们无法始终预料到需要哪些数据,从而导致许多工作负载的性能不佳。

PostgreSQL 18 引入了一个新的异步 I/O (AIO) 子系统,旨在解决这一限制。AIO 允许 PostgreSQL 同时发出多个 I/O 请求,而不是按顺序等待每个请求完成。这扩展了现有的预读功能,并提高了整体吞吐量。PostgreSQL 18 中支持的 AIO 操作包括顺序扫描、位图堆扫描和 vacuum。基准测试已显示在某些场景下性能提升高达 3 倍。

新的 io_method 设置允许您在 worker 和 io_uring 等 AIO 方法之间切换,或者您也可以选择使用 sync 设置来维持当前 PostgreSQL 的行为。现在有更多参数需要考虑使用 AIO 进行调优,您可以在 文档中了解更多。

PostgreSQL 的一项关键功能是生成和存储 统计信息,这些统计信息有助于 PostgreSQL 选择最高效的查询计划。在 PostgreSQL 18 之前,这些统计信息在 主版本升级 时不会保留,这可能导致繁忙系统的查询性能显著下降,直到 ANALYZE 运行完成。PostgreSQL 18 引入了在主版本升级期间保留查询规划器统计信息的能力,这有助于升级后的集群在升级后更快地达到预期性能。

此外,执行主版本升级的实用程序 pg_upgrade 在 PostgreSQL 18 中包含多项增强功能,例如在数据库包含大量对象(如表和序列)时,升级速度更快。此版本还允许 pg_upgrade 根据 –jobs 标志的设置并行处理其检查,并添加了 –swap 标志,该标志可以交换升级目录而不是复制、克隆或链接文件。

PostgreSQL 18 通过自动加速您的工作负载的功能,进一步提高了查询性能。此版本在 多列 B-tree 索引 上引入了“跳过扫描”查找,从而提高了省略一个或多个前缀索引列上的 = 条件的查询的执行时间。它还可以优化 WHERE 子句中使用 OR 条件的查询,使其能够使用索引,从而显著加快执行速度。此外,PostgreSQL 在规划和执行表连接方面也进行了许多改进,从提高哈希连接的性能到允许合并连接使用增量排序。PostgreSQL 18 还支持 GIN 索引 的并行构建,以及 B-tree 和 BRIN 索引 的连接,以支持此功能。

此版本还基于 PostgreSQL 对硬件加速的支持,包括对 popcount 函数的 ARM NEON 和 SVE CPU 本地指令的支持,该函数由 bit_count 和其他内部功能使用。

PostgreSQL 18 引入了 虚拟生成列,它们在查询时计算值而不是存储它们。这是生成列的默认选项。此外,已存储的生成列现在可以进行逻辑复制。

此版本为 INSERT、UPDATE、DELETE 和 MERGE 命令的 RETURNING 子句 添加了访问先前值 (OLD) 和当前值 (NEW) 的能力。PostgreSQL 18 还通过 uuidv7() 函数支持 UUIDv7 生成,允许您生成时间戳排序的随机 UUID,以支持更好的缓存策略。PostgreSQL 18 将 uuidv4() 作为 gen_random_uuid() 的别名。

PostgreSQL 18 为 PRIMARY KEY 和 UNIQUE 约束添加了 时间范围约束(范围上的约束),使用 WITHOUT OVERLAPS 子句;为 FOREIGN KEY 约束添加了时间范围约束,使用 PERIOD 子句。

最后,PostgreSQL 18 使使用 CREATE FOREIGN TABLE … LIKE 命令,通过本地表的定义更容易创建外部表的模式定义。