代码 PostgreSQL 19 Beta 1:REPACK 替代 VACUUM FULL/CLUSTER,WAIT FOR 支持 standby 读己写

2026-09-14 21:01:58

PostgreSQL 19 Beta 1:REPACK 替代 VACUUM FULL/CLUSTER,WAIT FOR 支持 standby 读己写

PostgreSQL 19 Beta 1 已发布,正式版计划 2026-09。

REPACK:把 VACUUM FULL 和 CLUSTER 合并成一条命令

新增 REPACK 命令,整合并取代 VACUUM FULLCLUSTER。传统 VACUUM FULLCLUSTER 都需要排它锁;REPACK ... CONCURRENTLY 可在不阻塞读写的情况下重建表。需要在线整理表、又不想让 DML 停等时,这是 19 里最直接的选项。

WAIT FOR:在 standby 上做读己写

新增 WAIT FOR 命令,等待 standby 回放到指定 LSN,支持在 standby 上的 read-your-writes 查询模式。主库提交后拿到 LSN,到 standby 执行 WAIT FOR,等回放到该 LSN 再查,避免读到旧数据。

SQL/PGQ

支持 SQL/PGQ(SQL 标准属性图查询)。图查询写法进入 SQL 标准语法,不再只能靠扩展或应用层拼关系。

autovacuum:并行 worker 与评分

autovacuum 可使用并行 worker,新参数是 autovacuum_max_parallel_workers。同时新增评分系统,给最需要 vacuum/analyze 的表排优先级。vacuum 还引入一种新策略:在页面被查询时标记为 visible,减少后续 vacuum 工作量。

运行中开启/关闭 data checksums

数据校验和(data checksums)现在可以在数据库运行期间开启或关闭。

其他新增

  • 逻辑复制现在复制 sequence 值;当 wal_level=replica 时可按需自动开启逻辑复制,无需重启服务。
  • UPDATE/DELETE 支持 FOR PORTION OF 子句做时间区间更新/删除。
  • 新增 pg_plan_advice 扩展用于稳定/控制查询计划,配套 pg_stash_advice 按 query id 自动应用建议。
  • 新增 GROUP BY ALL 语法;jsonpath 增加 lower()/upper()/initcap()/replace()/split_part()/trim() 等字符串函数。
  • 支持 INSERT ... ON CONFLICT DO SELECT ... RETURNING
  • 新增 ALTER TABLE ... MERGE PARTITIONS / SPLIT PARTITIONS
  • 服务端 SNI 支持(新增 pg_hosts.conf,可按客户端请求的主机名返回不同 TLS 证书);password_expiration_warning_threshold 默认 7 天。
  • 监控:新增 pg_stat_lock(按锁类型的统计)和 pg_stat_recovery;多个统计视图新增 stats_reset 列;pg_stat_progress_vacuum 新增 modestarted_by 列。
  • io_method=worker 时按新参数 io_min_workers/io_max_workers 自动扩缩 I/O worker 数量。

兼容性变更:升级前要过的清单

  • 移除 RADIUS 支持。
  • standard_conforming_strings 在服务端强制为 on
  • max_locks_per_transaction 默认从 64 改为 128。
  • JIT 改为默认关闭。
  • 移除 MULE_INTERNAL 编码。
  • TOAST 默认压缩由 pglz 改为 lz4
  • 跨大版本迁移需 pg_dumpall/pg_upgrade 或逻辑复制。
复制全文 生成海报 PostgreSQL 数据库 VACUUM 复制 升级

推荐文章

程序员茄子在线接单