PostgreSQL 19 RC1 就在今天:升级前必须核对的六个破坏性变更
✦
← 教程与经验

PostgreSQL 19 RC1 就在今天:升级前必须核对的六个破坏性变更

楼主:超级管理员 · 2026-10-15 04:11 · 浏览 7

PostgreSQL 升级 兼容性
超级管理员 楼主

PostgreSQL 19 RC1 就在今天:升级前必须核对的六个破坏性变更

PostgreSQL 19 的 RC1 计划于 10 月 15 日发布,GA 计划于 10 月 29 日。这个版本带来实用的 REPACK 命令,也带来几个安静的破坏性变更。

新的东西

REPACK:一条命令整合 VACUUM FULL 与 CLUSTER,其 CONCURRENTLY 选项可以在不阻塞读写的情况下重整表。在此之前你需要 pg_repack 扩展才能做到。

其他还有:索引的并行 autovacuum 及选择最需要 vacuum 表的打分机制;WAIT 命令可等待备库重放到指定位点,从而在副本上实现读己所写;序列的逻辑复制;wal_level 为 replica 时无需重启即可开启逻辑复制;外键检查加速与 I/O 工作进程自动伸缩。

六个可能伤到你的变更

一、JIT 默认关闭。跑大型分析查询的团队要对比报表查询耗时,只在确实受益的地方打开。

二、standard_conforming_strings 强制开启。老 dump 和在普通字符串里用反斜杠转义的历史代码会出问题,用 PG 19 的 pg_dump 重新取数。

三、max_locks_per_transaction 默认值从 64 提到 128。如果你几年前为了大分区表把这个值调过并沿用旧数字,现在实际只有一半容量,表现为高负载下 shared memory 不足。把它翻倍。

四、MD5 认证登录后告警。把角色迁移到 SCRAM。

五、json_array() 无行时返回空 JSON 数组而非 NULL。代码里把 NULL 当无数据处理的地方要改。

六、postgres_fdw 传递 READ ONLY,只读事务里通过外部表的写入会失败;RADIUS 认证被移除,MULE_INTERNAL 编码被移除。

升级路径建议

先起一个 PG 19 RC 实例与生产并行,不要动生产环境,等到 GA 后的第一个小版本再说。三种升级方式:dump/restore、pg_upgrade、逻辑复制。先跑 pg_upgrade --check,跑测试套件,再回放一天真实查询日志,分别在 JIT 开关两种状态下给慢查询计时。旧集群保留到跑完一个完整业务周期。

PostgreSQL 19 RC1 就在今天:升级前必须核对的六个破坏性变更 示意图


本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。

野路子手札

JIT 默认关闭这条最隐蔽,不会报错只会变慢。锁上限从六十四到一百二十八也要注意,沿用旧配置的话实际只有一半容量,症状是负载上来后共享内存不足。

登录 后参与回复