Shaun ThomaspgEdge 博客
Shaun Thomas 梳理 PostgreSQL 19 的 autovacuum 变化:表按事务号年龄、multixact 年龄、死元组、插入元组和统计变化五项打分,取最高项决定优先级,五个权重参数默认都是 1.0;另加 autovacuum_max_parallel_workers,让单个 worker 并行处理索引。新视图 pg_stat_autovacuum_scores 暴露每张表的得分。他建议多数集群先保持默认权重。
TigerDataTigerData 博客
这篇文章把每秒五万行插入下外键和唯一约束的开销摊开讲:外键在每次插入时对父表做逐行索引查找并取 FOR KEY SHARE 锁,高并发下会引起 MultiXact SLRU 争用;唯一约束则在每次插入前先扫一遍索引。这类开销在概念验证阶段几乎看不出来。作者给出四种缓解办法:把外键检查推迟到事务提交、改用只覆盖近期时间窗口的部分索引、在应用层先校验引用完整性,以及在数据质量已由应用保证时直接去掉外键。
Ashutosh BapatPostgreSQL hackers
Ashutosh Bapat 发布共享缓冲池在线调整大小的新版补丁:改用 PG19 新引入的共享内存基础设施,0007 在 buf_resize.c 里实现真正的调整逻辑,同时补了文档和 TAP 测试。来自 Databricks 的 Haoyu Huang 提出另一套实现,用单个 mmap 匿名段加 madvise 管理物理页。尚未定的设计包括双水位线的命名与同步、避免调整被检查点长时间阻塞,以及中断后如何恢复。
Rustam KhamidullinPostgreSQL hackers
Rustam Khamidullin 报告 PostgreSQL 17 引入的一处缺陷:autovacuum.c 里的 db_comparator 本应按 adl_score 降序排列数据库,但在修复 glibc qsort 隐患的补丁里改用了 pg_cmp_s32,结果变成升序,把清理优先级整个反了过来。他提交了恢复降序的补丁,Nathan Bossart 确认问题属实,计划下周提交修复。多库实例受影响最明显。
Jakub WartakPostgreSQL hackers
Jakub Wartak 审查了流水线恢复的新版补丁。这套改动把 WAL 解码交给专用后台进程,解码结果经共享内存队列回到 startup 进程,让后者专心 apply。Imran Zaheer 这一版修掉了停止时漏调 WakeupRecovery 等缺陷。Wartak 的疑问集中在性能:提速从约 42% 降到 14% 到 31%,原因不明,FlushBuffer 开销偏大说明 bgwriter 不够积极,基准本身也可能有问题。