代码 PostgreSQL 18 升级清单:AIO、skip scan 与虚拟生成列,以及 pg_upgrade 保留统计信息

2026-09-10 21:03:49

PostgreSQL 18 升级清单:AIO、skip scan 与虚拟生成列,以及 pg_upgrade 保留统计信息

官方公告:
完整 release notes:

一、异步 I/O 子系统(AIO)

PostgreSQL 18 引入异步 I/O 子系统,把顺序扫描、位图堆扫描、VACUUM 等操作中原本逐个等待的 I/O 请求改成并发排队发出。官方基准测试显示,特定场景下读性能最多有 3× 提升。

控制参数:

  • io_method:取值包括 syncworkerio_uring
  • io_combine_limitio_max_combine_limit:控制 I/O 请求的合并上限

新增系统视图 pg_aios,可以看到当前正在用于异步 I/O 的文件句柄。

顺带的一个变化:对于不支持 fadvise() 的系统,effective_io_concurrencymaintenance_io_concurrency 现在也能设为大于 0 的值。

调参时注意 io_uring 依赖运行环境支持,切换 io_method 后建议用 pg_aios 观察实际的并发排队情况,再结合压测调整 combine limit,不要在没压测的情况下直接套用他人的参数。

二、索引

  • 多列 B-tree 支持 skip scan 查找:当查询缺少一个或多个前缀索引列上的等值条件时,规划器也能用上多列索引;WHERE 中的 OR 条件同样能被优化成走索引。
  • GIN 索引支持并行构建。

三、通用性能

连接(join)的计划与执行有改进:增强了 hash join,并允许 merge join 使用增量排序(incremental sort)。

四、生成列

虚拟生成列(virtual generated columns)在查询时计算值,而不是存储值,现在这已经成为生成列的默认行为,存储开销更低。已存储(stored)的生成列现在支持逻辑复制。

五、工具命令与 DML

  • INSERTUPDATEDELETEMERGERETURNING 子句支持 OLD / NEW,可以同时拿到修改前后的值,审计日志和变更追踪的写法可以简化。
  • VACUUMANALYZE 可以只处理分区表本身而不处理子表。
  • 新增用于修改单表、单列优化器统计信息的函数。

六、函数与排序规则

  • uuidv7():生成按时间有序的 UUID,索引表现优于 v4、索引碎片更少;uuidv4()gen_random_uuid() 的别名。
  • casefold():做更精细的大小写无关匹配;新增内置排序规则提供方 PG_UNICODE_FAST,在大小写转换上提供完整 Unicode 语义,同时加速比较。
  • 使用非确定性排序规则时,text 支持 LIKE 比较。
  • 注意:全文检索现在使用集群的默认 collation provider,而不再固定使用 libc。pg_upgrade 之后,可能需要重建所有全文检索索引和 pg_trgm 索引。

七、约束

  • 时间范围约束(temporal constraints):PRIMARY KEYUNIQUE 可用 WITHOUT OVERLAPSFOREIGN KEY 可用 PERIOD
  • CHECK 和外键约束可以声明为 NOT ENFORCED
  • 分区表上允许 NOT VALID 外键约束。

八、安全与认证

支持 OAuth 认证(通过 PostgreSQL 扩展实现 OAuth 2.0 机制)。新增 FIPS 模式校验;新增服务端参数 ssl_tls13_ciphers,用于配置 TLS v1.3 的密码套件。

九、升级与运维

pg_upgrade 有三处值得注意的变化:

  • 现在会保留优化器统计信息,刚升级完的数据库不容易出现执行计划回退。
  • 支持 --jobs 并行执行检查与升级。
  • 新增 --swap,用交换升级目录的方式代替复制文件。

另有新参数 file_copy_method 控制文件复制方式。

监控方面:pg_stat_io 新增以字节为单位报告 I/O 活动的列;pg_stat_get_backend_wal() 提供按后端的 WAL 统计;pg_stat_database 增加并行 worker 活动的列。

升级路径上,先确认全文检索与 pg_trgm 索引是否需要重建,再决定是否依赖 --swap 缩短停机窗口;pg_upgrade 保留统计信息降低了计划回退的概率,但涉及排序规则变化的对象仍要单独验证。

复制全文 生成海报 PostgreSQL 数据库 升级 性能

推荐文章

程序员茄子在线接单