PostgreSQL 资讯
保留原始来源与发布日期的新闻、博客和活动。
给分配函数加 malloc 属性会引来大量误报
自动清理清不掉元组时将报出最旧 xmin 的来源
enable_groupagg 的文档措辞之争以拒绝收场
旧服务器不可用时改订阅连接的行为不对
enable_partitionwise_aggregate 让聚合下沉到分区
AWS Certificate Manager 开始支持 ACME
公共证书可以走标准协议签发,自建的 ACME 胶水代码有机会减掉一部分。
OpenSSH 10.4 收紧了几处可降级的旧路径
sshd -G 输出大小写有变,seccomp 或 no_new_privs 失败改为致命错误,重协商也更严格。
一份面向 DBA 的五类性能瓶颈清单
统计过期、缺连接池、autovacuum 不足、内存参数失调与锁竞争,逐条给出排查方向。
把 pgAudit 审计日志自动送进 S3 再用 Athena 查
订阅过滤器触发 Lambda 把日志转成 CSV 按日期分区,90 天转低频,一年后归档。
按事务号年龄失效复制槽的补丁调整了分工
vacuum 只立即失效无人持有的槽,仍被持有的交给 checkpointer 常规扫描处理。
有人提议把 pg_hba 换成 TOML 之类的标准格式
概念验证内嵌 tomlc17 演示 pg_hosts;Tom Lane 质疑迁移动力不足,Andrew Dunstan 担心维护负担。
冲突日志表的作者回应了回退呼吁
Amit Kapila 称那是 apply 循环最外层的 catch,插入失败时复制源点位不推进,不会发散。
wal_compression 默认改用 LZ4 的提案被重新提起
Michael Paquier 与 Christoph Berg 认为该换,且 on 并非默认值,只影响显式设过的人。
libpq 异步接口的大 SSL 记录处理已回合各分支
测试覆盖了反复运行的异步测试与 SSL 下的大批量 COPY TO STDOUT,未见挂起或回归。
GiST 只读索引扫描的微清理缺陷已提交
根页面上 so->curBlkno 没被设置,导致 gistkillitems() 在根页面的行为不安全。
KVM 影子 MMU 逃逸漏洞公开 PoC
Januscape 公开了一个 x86 KVM 影子 MMU 的 guest 到 host 逃逸问题,编号 CVE-2026-53359,影响范围从 2010 年 8 月的提交一直到 2026 年 6 月 16 日的修复提交。已公开的 PoC 足以让 guest 触发宿主内核 panic,作者称完整可控的逃逸利用存在但未发布。接收不可信 guest、又开了嵌套虚拟化的环境风险最高。跑 KVM 的团队应确认宿主内核是否包含提交 81ccda30b4e8,必要时先关掉嵌套虚拟化。
用 CloudNativePG 分布式拓扑做跨区域容灾
Cybertec 的 Wellingtone Luvonga 演示了怎么用 CloudNativePG 的分布式拓扑在多个 Kubernetes 集群之间做跨区域容灾。方案拿 MinIO 当兼容 S3 的对象存储,主集群用 barman-cloud 插件持续归档 WAL,副本集群轮询同一份对象存储完成初始化并保持同步。两点要注意:复制延迟取决于对象存储吞吐而非直连流复制,主副集群还必须跑完全相同的 PostgreSQL 与 operator 版本。
PostgreSQL 18 的四项逻辑复制改进落到 RDS
AWS 的 Ramdas Gutlapalli 梳理了 PostgreSQL 18 在逻辑复制上的四项改动。新的发布参数 publish_generated_columns 让 STORED 生成列可以进入复制流;pg_stat_subscription_stats 增加七个冲突计数器,把笼统的错误数拆成按冲突类型统计;新订阅的 streaming 默认值改为 parallel;新增 idle_replication_slot_timeout,自动废弃长期闲置的复制槽。
有人提议把共享缓冲区的查找表换掉 dynahash
来自 Databricks 的 Dhruv Aron 提议把共享缓冲区的查找表从 dynahash 换成专用哈希表:目录、段、桶链、空闲列表那几层结构,对这个固定大小的场景太重了。基准显示插入、查找和删除都明显变快。Heikki Linnakangas 确认目录这层间接对所有共享内存哈希表都多余,因为它们都不支持动态扩容,新表内存占用也小得多。他同时担心 InvalidateBuffer() 持自旋锁的时间变长,要求补上大量哈希冲突下的最坏情况基准。
索引预取补丁 V29 让点查询少调一次接口
Peter Geoghegan 发出索引预取补丁的 V29,因为 V28 已经打不干净。这一版有两项微优化:索引访问方法可以在 amgetbatch 返回时直接设置 knownEndBackward 与 knownEndForward,让简单点查询只调一次 amgetbatch;索引元组计数改成每批计一次而不是每元组一次,语义与位图索引扫描一致。V29 还带了一个 EXPLAIN (ANALYZE, IO) 补丁,索引扫描做 IO 预取时可以看到读流的诊断信息。
导入畸形范围直方图会算出负选择率甚至崩溃
Ewan Young 报告 pg_restore_attribute_stats() 接收范围边界直方图时不做校验。compute_range_stats() 维持着两条不变式:直方图里不能有空 range,上下界都要升序排列。range 与 multirange 的选择率估算器依赖这两条,一旦被违反,轻则算出错误甚至为负的选择率,重则在带断言的构建里直接让进程崩溃。补丁改为导入时校验直方图,对不合法输入以 WARNING 拒绝,与其他统计信息的处理方式一致。
存储层删错文件的缺陷已修进主干
Heikki Linnakangas 已把一处存储层的错删修复推进 master。mdunlinkfiletag 本该按传入的 fork 与段号删文件,实际删掉的却是主 fork 的第 0 段。Thomas Munro 建议反过来做:不去泛化 register_unlink_segment(),而是拿掉它的 fork 与段参数,因为外部代码没有理由往 md.c 的队列里塞删除请求。Matthias van de Meent 确认那条分支只在主 fork 上才走到。