标签

PostgreSQL

把 AI 接入 PostgreSQL 开发:从邮件线程分析到补丁审查

来源: postgr.es 35
一次面向 PostgreSQL 提交者与核心团队的 AI 工作坊,把讨论重点从“模型能回答什么”推进到了“模型如何参与真实的数据库工程”。三天的内容覆盖 Claude 命令行环境、自动化测试与基准测试、概念验证补丁,以及邮件线程分析和补丁审查。真正值得关注的不是生成代码本身,而是如何让 AI 在可验证、可回滚的边界内缩短调查周期。 数据库内核中的很多想...

PostgreSQL GEQO 的七个参数:真正值得调整的通常只有 geqo_threshold

来源: postgr.es 29
当一条 SQL 连接的表越来越多,PostgreSQL 需要评估的连接顺序会快速膨胀。遗传查询优化器 GEQO 用近似搜索控制规划时间,为此提供了七个 GUC 参数。但参数多不等于都值得调整:日常性能治理中,最有实际意义的通常是 ,其余参数更适合作为 PostgreSQL 内部算法的控制面,而不是常规调优旋钮。 对于少量表连接,PostgreSQL 可...

PostgreSQL 的 full_page_writes:崩溃后为什么 WAL 要记录整页

来源: postgr.es 19
看起来像一个直接的性能开关:关闭后 WAL 变小,写入量也可能下降。但它承担的职责并不是普通的日志优化,而是避免 PostgreSQL 在崩溃恢复时把一张“撕裂页”误认为有效数据页。除非你能够严格证明底层存储能保证原子页写入,否则关闭它通常是在用恢复可靠性换取一部分 I/O。 PostgreSQL 的表和索引由固定大小的数据页组成,默认页面大小通常是 ...

PostgreSQL 19 让 Autovacuum 学会排优先级:评分、权重与并行清理

来源: postgr.es 33
Autovacuum 从 PostgreSQL 8.1 起就承担着回收死元组、刷新统计信息和防止事务 ID 回卷的工作。PostgreSQL 19 的关键变化,不是增加另一条触发规则,而是让维护任务有了明确的优先级:数据库和表都会先接受风险评估,autovacuum worker 再处理最紧迫的对象。 这改变了一个长期存在的问题。过去,接近事务 ID ...

PostgreSQL 的 fsync:一个设置错误就可能让数据无法恢复

来源: postgr.es 32
默认开启,看起来只是 中一个普通的布尔参数,实际却守着 PostgreSQL 的持久性底线。查询规划参数配错,常见后果是 SQL 变慢; 配错,在断电、操作系统崩溃或宿主机故障后,可能留下无法恢复的数据损坏。 PostgreSQL 修改数据时,不会让每个事务直接重写完整的数据文件。它先更新共享缓冲区,并把恢复所需的信息写入 WAL。事务提交、检查点和后...

别把超级用户交出去:为第三方 DBA 设计 PostgreSQL 最小权限账号

来源: postgr.es 30
第三方 DBA 需要查看慢查询、定位锁等待,甚至在事故中终止异常会话,但这不意味着他们必须获得 PostgreSQL 超级用户。更稳妥的方案是创建一个专用登录角色,再用 PostgreSQL 的预定义角色逐项授予监控、会话管理和维护能力。 这个模型的重点不是“尽量少给权限”,而是把工作范围翻译成可审计的数据库权限:能观察什么、能执行什么、明确不能接触什...

PostgreSQL 的 from_collapse_limit:别让子查询展开制造过大的连接问题

来源: postgr.es 33
在 PostgreSQL 中, 子查询通常不会原封不动地留在执行计划里。优化器会尝试把它展开并合并到外层查询,使谓词、连接顺序和索引选择拥有更大的优化空间。但展开后的连接关系过多时,优化器需要评估的组合会迅速膨胀。 就是控制这一步的 GUC:只有展开后仍处于可控规模的查询,才会被默认折叠进外层。 很多人把下面的结构理解为“先执行子查询,再与 连接”: ...

PostgreSQL 19 Beta 2:用内置并发 REPACK 解决表膨胀

来源: planetscale.com 16
PostgreSQL 的常规 会回收死元组占用的空间,让后续写入复用这些数据页,却通常不会缩小表文件。PostgreSQL 19 Beta 2 引入了内核内置的在线重写能力,并提供 ,让治理严重表膨胀不再完全依赖长时间阻塞式重写或外部扩展。 MVCC 更新一行时,通常会生成新版本,并把旧版本留在表中。旧版本不再被任何事务需要后,就成为死元组。常规 主要...

在 PostgreSQL 内部做混合搜索:用 BM25、稀疏向量与 RRF 兼顾语义和术语

来源: postgr.es 27
向量检索很擅长理解“用户换了一种说法”的问题,却未必能准确命中 、 或 这类精确术语。pgEdge Vectorizer 新增的混合搜索能力将 BM25 稀疏向量生成放进 PostgreSQL,与稠密 embedding 一起维护,再用 Reciprocal Rank Fusion(RRF)合并结果。这样,应用不必额外维护一套关键词搜索服务。 稠密向量...

PostgreSQL 16 的 file_extend_method:给文件系统问题准备的后门开关

来源: postgr.es 24
看起来像一个普通的性能调优参数,实际上更接近一个应急开关。它的用途不是让所有 PostgreSQL 实例都获得更高吞吐,而是在 PostgreSQL 16 引入的文件扩展优化与特定文件系统不兼容时,允许管理员关闭这项优化。 当表或索引继续增长时,PostgreSQL 必须扩展对应的数据文件。扩展文件并不只是“把文件变大”这么简单:数据库需要确保新增区域...