选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

PostgreSQL 博览 RSS 订阅

当天收录 21 条。

提议在 PostgreSQL 20 中废弃 PQfn()

Nathan Bossartpgsql-hackers

Nathan Bossart 提议废弃 PQfn()。这个函数 2003 年就被标为过时,2026 年又标为不安全,除 libpq 内部的大对象接口外没发现第三方直接使用。方案是让它无条件返回错误但保留符号。Debian 代码搜索显示多个语言绑定仍引用它,维护者同意废弃。难点是替换大对象操作依赖的内部实现:预备语句会遇到名称冲突和 DISCARD 中断,PQexecParams() 则测出约 41% 的性能下降。

补丁修复 REPACK CONCURRENTLY 期间的 WAL 堆积

Zhijie Houpgsql-hackers

Zhijie Hou 在 PGConf.dev 听完 REPACK 的演讲后提交补丁,修复并发 repack 期间 WAL 文件不必要堆积的问题,演讲澄清了这种堆积属于非预期行为。Álvaro Herrera 承认这是一处疏漏,打算尽快审查并提交这个按 Chao Li 意见调整过注释的重构补丁。讨论中还提到要不要加 TAP 测试来验证操作期间 WAL 文件被正确清理,Herrera 认为略显多余,但对验证来说可能值得。

数据校验和状态切换补丁暴露并发问题

Tomas Vondrapgsql-hackers

Tomas Vondra 继续审查数据校验和状态变更补丁,发现几处并发问题。备库提升过程中状态从 inprogress-on 退回 off 时,已有后端没有通过 EmitProcSignalBarrier() 收到通知,新旧连接看到的状态因此不一致。测试 012 的不确定行为则来自校验和启动器与检查点进程之间的竞态,两者交错顺序不同,最终状态就不同。他做了个用 LWLock 防竞态的原型,但不确定是否正确。

五种最容易踩坑的 PostgreSQL 锁行为

Shinya Katodev.to

Shinya Kato 列了五种容易踩坑的锁行为。ALTER TABLE 申请 ACCESS EXCLUSIVE 时排在现有锁后面,后续 SELECT 又排在它后面,建议设 lock_timeout 并盯住空闲事务。INSERT 会对被引用的父行取 FOR KEY SHARE,两个会话反序加锁就死锁。防回卷的 autovacuum 不接受取消,VACUUM 末尾的截断阶段也会短暂拿 ACCESS EXCLUSIVE。

向量索引怎么选取决于负载而不是算法

Hien PhanTigerData 博客

Hien Phan 把 PostgreSQL 的向量索引选择归结到四个约束:内存、召回率要求、写入频率和过滤条件的选择性,最优索引取决于负载而非算法优劣。文章从精确搜索讲到近似最近邻:内存够时用 HNSW,写入密集偏向 IVFFlat,数据集超出内存则考虑 DiskANN 一类做法;工具上覆盖 pgvector、pgvectorscale,以及把向量相似度与 BM25 关键词匹配结合的混合检索。作者强调真实查询往往带过滤和连接。

用 PL/pgSQL 给 EXPLAIN 输出做后处理

Andrei LepikhovpgEdge 博客

Andrei Lepikhov 写了一组 PL/pgSQL 函数给 EXPLAIN 的输出做后处理。出发点是原始输出塞了太多与平台和版本相关的细节:代价、内存分配和 worker 数量都会随硬件浮动,既让回归测试不稳定也让文档难读。pretty_explain_analyze() 直接执行查询并处理结果,内存值统一成 NN、worker 数变成 N,是否显示代价、宽度和循环次数由开关控制,默认全关。

Christophe Pettus 评测 Google AlloyDB

Christophe Pettusthebuild.com

AlloyDB 是 PostgreSQL 派生的查询引擎加自研分布式存储层,架构接近 Aurora,把 WAL 处理和持续清理放到存储层。特色是列式引擎,合适的分析查询能快 10 到 100 倍,但要显式物化表;索引顾问会分析查询并推荐普通与向量索引;读池提供单端点的只读扩展。默认版本是 PostgreSQL 16,扩展走白名单,托管形态不支持自定义 C 扩展。AlloyDB Omni 可以在 Google Cloud 之外跑同一引擎。

CloudNativePG 副本集群的切换与回切实操

EnterpriseDBEDB 博客

EnterpriseDB 的运维手册第二部分讲在 Kubernetes 上对两套由 CloudNativePG 管理的 EDB Postgres Advanced 18 集群做受控切换与回切。第一部分用 Barman Cloud Plugin 部署了副本集群,这一篇接着给出把主库职责从一个集群转移到另一个集群、再切回来的完整步骤。适用场景是地理或逻辑上分离的两套 PostgreSQL 集群之间的高可用演练和计划内切换。