PostgreSQL 19 Beta 1:REPACK 合并 VACUUM FULL 与 CLUSTER,逻辑复制可复制 sequence
发布公告:
Release Notes:
异步 I/O
PostgreSQL 19 在 18 引入的异步 I/O 子系统上继续推进。io_method=worker 现在会根据新增的 io_min_workers 与 io_max_workers 设置自动伸缩 I/O worker 的数量。
Vacuum 与维护
- autovacuum 可以使用并行 worker,由新参数
autovacuum_max_parallel_workers配置。 - 新的 autovacuum 打分(scoring)系统用于给待 vacuum 的表排优先级。
- 新策略可以在页面被查询时将其标记为 visible,从而减少后续 vacuum 的工作量。
- 新增
REPACK命令及其非阻塞选项REPACK ... CONCURRENTLY,用于以更低的运维开销重建表。REPACK合并了现有VACUUM FULL与CLUSTER两个命令的功能,CONCURRENTLY模式下不阻塞读写。
SQL
- 引入 SQL/PGQ(SQL Property Graph Queries)支持,可以用 SQL 标准语法执行属性图查询。
- 扩展时态查询能力:
FOR PORTION OF子句现在支持UPDATE与DELETE。 - 新增
ALTER TABLE ... MERGE PARTITIONS与ALTER TABLE ... SPLIT PARTITIONS。 - 支持通过
INSERT ... ON CONFLICT DO SELECT ... RETURNING返回 upsert 过程中发生冲突的行。 - 新增
GROUP BY ALL语法。 - jsonpath 增加
lower()、upper()、initcap()、replace()、split_part()以及trim()系列函数。
复制
- 逻辑复制现在可以复制 sequence 的值;当
wal_level设为replica时,可以不重启服务器就启用逻辑复制。 - 新增只读参数
effective_wal_level,报告当前实际生效的 WAL 级别。 - 新增
WAIT FOR LSN命令:会话可以等待直到指定日志位置之前的变更已在副本上重放,然后再执行SELECT,从而在 standby 上支持 read-your-writes。 - 新增服务器变量
wal_sender_shutdown_timeout。
其他
- data checksums 现在可以在数据库服务器运行期间启用或禁用。
- 新增 SQL 函数,用于取出重建 roles、tablespaces 和 databases 所需的 DDL 语句。
random()现在支持 date 与 timestamp 类型。- 通过新的
pg_hosts.conf文件支持服务端 SNI,使单台服务器可以按主机名提供不同的 TLS 证书。 - 新增
password_expiration_warning_threshold设置,默认 7 天。 - 新增
pg_stat_lock视图(按锁类型统计)与pg_stat_recovery视图。 - 许多统计视图新增
stats_reset列。 pg_stat_progress_vacuum与pg_stat_progress_analyze新增started_by列,pg_stat_progress_vacuum还增加了mode列。log_min_messages的级别可以按进程类型分别指定。EXPLAIN ANALYZE可通过其 IO 选项输出异步 I/O 统计信息。
扩展
pg_plan_advice模块用于稳定并控制 planner 的决策。- 配套的
pg_stash_advice扩展可以按 query-id 自动应用这些 advice。
升级注意事项
19 版本包含若干可能影响与之前版本兼容性的变更,升级前需对照 release notes 逐项确认。最终版本计划在 2026 年 9 月/10 月左右发布,当前为 Beta 阶段。