PostgreSQL码农集散地

我们在做梦, PG在“发疯”

一个晚上, PG 19 又干出1个五星级特性

就在昨天晚上, 我们大家都在睡梦中, PG 19 又新增了7个值得DBA关注的特性, 其中还有一个五星级特性.

一、Masahiko Sawada — Autovacuum 并行化

提交: 1ff3180 — Allow autovacuum to use parallel vacuum workers

DBA 价值: ⭐⭐⭐⭐⭐

这是本次最重磅的性能优化提交。允许 autovacuum 使用并行 worker 来加速大型表的 vacuum 操作。

解读: 此前 autovacuum 只能使用单个 worker 处理表,对于超大表(如几十 GB 的日志表)可能导致 vacuum 时间过长或无法及时完成。现在支持并行 vacuum 将显著改善这种情况。


二、Álvaro Herrera — REPACK 增强

提交: 28d534e — Add CONCURRENTLY option to REPACK

DBA 价值: ⭐⭐⭐⭐

为 CLUSTER 操作的 REPACK 实现添加了 CONCURRENTLY 选项。

解读: 允许在 REPACK 期间进行并发读写操作,大幅减少维护窗口对业务的影响。CLUSTER 操作通常需要排他锁,现在可以在一定程度上并行执行。


三、Nathan Bossart — 新系统视图

提交: 87f61f0 — Add pg_stat_autovacuum_scores system view

DBA 价值: ⭐⭐⭐⭐

新增 pg_stat_autovacuum_scores 系统视图。

解读: 提供 autovacuum 的性能评分数据,帮助 DBA 识别哪些表需要优先清理或调整 autovacuum 参数。是监控和调优 autovacuum 的重要工具。


四、Robert Haas — auto_explain 增强

提交:

  • e972dff — auto_explain: Add new GUC, auto_explain.log_extension_options
  • 0442f1c — Add a guc_check_handler to the EXPLAIN extension mechanism

DBA 价值: ⭐⭐⭐

扩展了 auto_explain 的日志能力,允许记录扩展选项信息。

解读: 对于使用自定义扫描路径或查询规划的扩展(如 pg_pathman),auto_explain 现在可以记录更多调试信息,便于性能分析和故障排查。


五、Melanie Plageman — 并行查询 instrumentation

提交: dd78e69 — Allocate separate DSM chunk for parallel Index[Only]Scan instrumentation

DBA 价值: ⭐⭐⭐

为并行索引扫描和仅索引扫描单独分配 DSM 内存块。

解读: 改进了并行查询的性能监控能力,减少了共享内存竞争,能更准确地进行性能分析和瓶颈定位。


六、Fujii Masao — 锁等待与内存管理

提交:

  • ca2b544 — Add TAP tests for log_lock_waits
  • 93dc1ace — Release postmaster working memory context in slotsync worker

DBA 价值: ⭐⭐⭐

修复了 slotsync worker 的内存泄漏问题。

解读: 解决了长时间运行 postmaster 的潜在内存膨胀问题,提升了复制槽管理的稳定性。


七、Alexander Korotkov — WAIT FOR 优化

提交: 834038c — Avoid syscache lookup while building a WAIT FOR tuple descriptor

DBA 价值: ⭐⭐

在构建 WAIT FOR 元组描述符时避免 syscache 查询。

解读: 减少了复制相关操作中的目录缓存查找开销,提升了 WAL 相关操作的性能。