PostgreSQL 19 新特性中文导读:GA 前夕抢先看
发布:2026-10-02 · 版本PG19运维
PostgreSQL 19 已进入发布冲刺:Beta 4 于 2026-09-23 发布,官方计划 10 月初进入 RC, GA(正式版)大概率就在 2026 年 10 月内。本文基于官方 Release Notes,挑出对中文开发者 最值得关注的特性。
注意:Beta 4 撤回了一批原计划特性(详见文末),以下内容以官方发布说明为准,GA 前仍可能微调。
运维同学最该关注的
1. REPACK:VACUUM FULL 的「不锁表」替代品
新 SQL 命令 REPACK 合并了 VACUUM FULL 与 CLUSTER 的能力,并且支持
REPACK CONCURRENTLY——重建表期间不阻塞读写。对曾经只能在维护窗口做表重建的团队,
这是 PG 19 最实用的礼物:
-- 以前:VACUUM FULL 拿 ACCESS EXCLUSIVE 锁,业务全停
-- 以后:
REPACK CONCURRENTLY my_bloated_table;
2. Autovacuum:并行 + 优先级评分
- autovacuum 现在可以并行 worker 清理一张表的多个索引(
autovacuum_max_parallel_workers); - 新增评分系统,优先处理「最需要」清理/统计的表,而不是简单轮询。
大表索引多、vacuum 跑不完的库,升级收益直接。
3. WAIT FOR LSN:备库读己之写
新命令让会话在备库上等待 LSN 回放到位后再执行查询:
-- 读写分离场景的「读己之写」模式
BEGIN;
WAIT FOR LSN '0/3A4B5C6';
SELECT * FROM orders WHERE id = 42;
COMMIT;
4. 逻辑复制不再需要重启实例
wal_level=replica 的实例可以按需在线开启逻辑复制,新增 effective_wal_level
参数报告实际生效级别。序列值也终于可以被逻辑复制了——在线大版本升级的拦路虎又少了两只。
开发者相关
- JIT 默认关闭:多数场景 JIT 收益不稳定,官方决定默认 off。
- TOAST 默认压缩改为 lz4:写入压缩数据的默认行为变化,跨版本逻辑复制需留意。
INSERT ... ON CONFLICT DO SELECT ... RETURNING:冲突行可以直接返回。GROUP BY ALL:所有非聚合列自动分组,少写一长串列名。- jsonpath 新增
lower()/replace()/trim()等字符串函数。
性能与可观测性
- 外键检查提速,官方口径含外键的插入最高 2 倍;
io_method=worker的 I/O worker 数量自动伸缩(io_min_workers/io_max_workers);- 新增
pg_stat_lock、pg_stat_recovery视图; EXPLAIN (ANALYZE, IO)可以展示异步 I/O 统计。
计划稳定性:pg_plan_advice
新扩展 pg_plan_advice 允许干预/固定优化器决策,配合 pg_stash_advice
按 query id 自动应用——官方给出了「计划回退(plan regression)」问题的系统性解法。
被计划翻车折磨过的 DBA 值得第一时间研究。
Beta 4 撤回了什么
为保证按时发布,以下特性已从 PG 19 撤回(可能进入未来版本):
- SQL 属性图查询(SQL/PGQ)
- 在线开关数据校验和(checksums)
FOR PORTION OF时态 UPDATE/DELETEALTER TABLE ... MERGE/SPLIT PARTITIONS
要不要立刻升级?
- 生产:等 GA + 首个 minor(惯例是 GA 后按季度出补丁),大版本升级前跑透回归;
- 新项目:直接上 19 是合理的;
- 学习:现在就用 beta/RC 环境试
REPACK与WAIT FOR LSN,升级窗口时你就是熟手。
参考:PostgreSQL 19 Release Notes(官方)、 Beta 4 公告。 本文事实以官方文档为准;勘误欢迎联系。
本文为 pgcn.cc 原创内容,转载需授权并保留链接。勘误/投稿: 联系方式。