2026-07-26
来源: postgr.es
35
一次面向 PostgreSQL 提交者与核心团队的 AI 工作坊,把讨论重点从“模型能回答什么”推进到了“模型如何参与真实的数据库工程”。三天的内容覆盖 Claude 命令行环境、自动化测试与基准测试、概念验证补丁,以及邮件线程分析和补丁审查。真正值得关注的不是生成代码本身,而是如何让 AI 在可验证、可回滚的边界内缩短调查周期。 数据库内核中的很多想...
2026-07-26
来源: postgr.es
29
当一条 SQL 连接的表越来越多,PostgreSQL 需要评估的连接顺序会快速膨胀。遗传查询优化器 GEQO 用近似搜索控制规划时间,为此提供了七个 GUC 参数。但参数多不等于都值得调整:日常性能治理中,最有实际意义的通常是 ,其余参数更适合作为 PostgreSQL 内部算法的控制面,而不是常规调优旋钮。 对于少量表连接,PostgreSQL 可...
2026-07-25
来源: postgr.es
19
看起来像一个直接的性能开关:关闭后 WAL 变小,写入量也可能下降。但它承担的职责并不是普通的日志优化,而是避免 PostgreSQL 在崩溃恢复时把一张“撕裂页”误认为有效数据页。除非你能够严格证明底层存储能保证原子页写入,否则关闭它通常是在用恢复可靠性换取一部分 I/O。 PostgreSQL 的表和索引由固定大小的数据页组成,默认页面大小通常是 ...
2026-07-24
来源: postgr.es
33
Autovacuum 从 PostgreSQL 8.1 起就承担着回收死元组、刷新统计信息和防止事务 ID 回卷的工作。PostgreSQL 19 的关键变化,不是增加另一条触发规则,而是让维护任务有了明确的优先级:数据库和表都会先接受风险评估,autovacuum worker 再处理最紧迫的对象。 这改变了一个长期存在的问题。过去,接近事务 ID ...
2026-07-24
来源: postgr.es
32
默认开启,看起来只是 中一个普通的布尔参数,实际却守着 PostgreSQL 的持久性底线。查询规划参数配错,常见后果是 SQL 变慢; 配错,在断电、操作系统崩溃或宿主机故障后,可能留下无法恢复的数据损坏。 PostgreSQL 修改数据时,不会让每个事务直接重写完整的数据文件。它先更新共享缓冲区,并把恢复所需的信息写入 WAL。事务提交、检查点和后...
2026-07-23
来源: postgr.es
30
第三方 DBA 需要查看慢查询、定位锁等待,甚至在事故中终止异常会话,但这不意味着他们必须获得 PostgreSQL 超级用户。更稳妥的方案是创建一个专用登录角色,再用 PostgreSQL 的预定义角色逐项授予监控、会话管理和维护能力。 这个模型的重点不是“尽量少给权限”,而是把工作范围翻译成可审计的数据库权限:能观察什么、能执行什么、明确不能接触什...
2026-07-23
来源: postgr.es
33
在 PostgreSQL 中, 子查询通常不会原封不动地留在执行计划里。优化器会尝试把它展开并合并到外层查询,使谓词、连接顺序和索引选择拥有更大的优化空间。但展开后的连接关系过多时,优化器需要评估的组合会迅速膨胀。 就是控制这一步的 GUC:只有展开后仍处于可控规模的查询,才会被默认折叠进外层。 很多人把下面的结构理解为“先执行子查询,再与 连接”: ...
2026-07-23
来源: planetscale.com
16
PostgreSQL 的常规 会回收死元组占用的空间,让后续写入复用这些数据页,却通常不会缩小表文件。PostgreSQL 19 Beta 2 引入了内核内置的在线重写能力,并提供 ,让治理严重表膨胀不再完全依赖长时间阻塞式重写或外部扩展。 MVCC 更新一行时,通常会生成新版本,并把旧版本留在表中。旧版本不再被任何事务需要后,就成为死元组。常规 主要...
2026-07-22
来源: postgr.es
27
向量检索很擅长理解“用户换了一种说法”的问题,却未必能准确命中 、 或 这类精确术语。pgEdge Vectorizer 新增的混合搜索能力将 BM25 稀疏向量生成放进 PostgreSQL,与稠密 embedding 一起维护,再用 Reciprocal Rank Fusion(RRF)合并结果。这样,应用不必额外维护一套关键词搜索服务。 稠密向量...
2026-07-22
来源: postgr.es
24
看起来像一个普通的性能调优参数,实际上更接近一个应急开关。它的用途不是让所有 PostgreSQL 实例都获得更高吞吐,而是在 PostgreSQL 16 引入的文件扩展优化与特定文件系统不兼容时,允许管理员关闭这项优化。 当表或索引继续增长时,PostgreSQL 必须扩展对应的数据文件。扩展文件并不只是“把文件变大”这么简单:数据库需要确保新增区域...