PostgreSQL 18:异步 I/O 把读盘拉快三倍,uuidv7 终于进主线

PostgreSQL 18 在 2025 年 9 月发布,新的异步 I/O 子系统让部分读场景快了三倍,uuidv7() 与虚拟生成列进了主线,OAuth 2.0 认证也补上了。这篇说清哪些升级理由是真的。

PostgreSQL 18 于 2025 年 9 月 25 日发布。官方给出的三个关键词是异步 I/O、升级体验、开发者功能。翻成日常运维的话:读盘更快、大版本升级更不痛、一些以前要装扩展的东西进了主线。

三个最值得升级的理由

第一,异步 I/O 子系统。 过去 PostgreSQL 的读请求是同步的,一个后端进程发起读就必须等。18 引入了一套可插拔的 AIO 层(io_method 可选 worker 或 io_uring),官方实测在从存储读取的场景里最高有 3 倍提升。注意“最高”两个字:顺序扫描、预读密集的负载受益明显,纯内存命中或小事务的 OLTP 提升有限。

第二,uuidv7() 进主线。 v7 UUID 把时间戳放在高位,索引局部性好得多。以前要装扩展或自己在应用层生成,现在 SELECT uuidv7(); 就行。对“主键用 UUID 又嫌插入慢”的表,这是最省事的改法。

第三,升级更不痛。 pg_upgrade 现在会保留优化器的统计信息,升级完不用等一轮 ANALYZE 才能恢复到原来的执行计划;同时并行检查、增量备份等也做了改进。

其他值得知道的

  • 虚拟生成列:值在查询时计算,不占存储,适合“从 JSON 里抽字段再建索引”的场景;
  • OAuth 2.0 认证:可以直接对接身份提供方,少一层代理;
  • skip scan:多列 B-tree 索引在首列区分度低时也能用上;
  • EXPLAIN 改进:更多信息,更少猜。

升级路径

  1. 先在从库或影子库跑一遍 pg_upgrade --check,重点看扩展兼容性(尤其是 pgvector、PostGIS 这类);
  2. 把 io_method 先留默认,压测对比再决定要不要开 io_uring;
  3. 检查连接池与客户端驱动版本,18 的协议层没有大改,但驱动对 OAuth 与新认证方式的支持参差不齐;
  4. 大版本升级后重跑一遍关键查询的执行计划,确认没有因为统计信息或规划器变化而回退。

一句判断

PostgreSQL 18 不是“功能爆炸”的版本,而是把基础设施层的短板补上:I/O 更现代、升级更平滑、UUID 更好用。如果你的库已经有明显的读 I/O 瓶颈,这可能是近几个大版本里最值得升的一次。

封面图:PostgreSQL 官方新闻稿配图(postgresql.org)。

← 返回文章列表

评论

…