标签

PostgreSQL

每个 AI Agent 都可以有 PostgreSQL,但不该都拥有真相

来源: postgr.es 56
Databricks 收购 Electric,值得关注的地方不只是交易本身,更在于它提示了一种正在成形的架构:PostgreSQL 不再只能作为远程服务器运行,也可以进入浏览器、应用进程、无服务器环境,甚至 AI Agent 的沙箱。 Electric 的 PGlite 是编译为 WebAssembly 的 PostgreSQL,可以嵌入 JavaSc...

PostgreSQL 的隐藏式查询提示:用 join_collapse_limit 固定连接顺序

来源: postgr.es 46
PostgreSQL 通常不会提供传统意义上的查询提示(query hint)。开发者不能直接告诉优化器“必须使用某个索引”或“必须按照这个连接顺序执行”。不过, 提供了一个非常明确的例外:当它被设置为 时,规划器会按照 SQL 中书写的顺序连接表。 这不是未公开的漏洞,也不是偶然的实现细节,而是 PostgreSQL 文档描述过的配置行为。它适合在连...

Postgres 跑在 Kubernetes 上,别再只盯着 Working Set

来源: postgr.es 43
在 Kubernetes 中, 经常被当作容器真实内存占用的代表,并参与内存压力判断、驱逐和告警。但对 PostgreSQL 来说,这个指标可能严重失真:数值更高的实例未必更接近 OOM,数值看起来平稳的实例也可能在下一次大排序时直接崩溃重启。 问题不只是监控面板画错了一条线,而是 PostgreSQL 的匿名内存、共享缓冲区和 Linux 文件页缓存...

PostgreSQL 19:那些经得起版本升级的实践,以及真正需要更新的细节

来源: postgr.es 50
PostgreSQL 19 仍处于 beta 阶段,最终版本的细节可能变化。不过,从当前版本可以看出一个重要趋势:很多针对 PostgreSQL 10、11 写下的建议并没有失效,真正变化的是执行这些建议时的性能边界和运维工具。 依然是批量导入的首选,B-tree 仍是默认索引,BRIN 仍适合物理顺序与业务顺序高度相关的数据,分区表仍然首先服务于生命...

PgColumnar 1.0 Alpha 2:从列式存储走向对象存储与 Iceberg

来源: postgr.es 33
PgColumnar 1.0 Alpha 2 于 2026 年 8 月 18 日发布,距离上一版 1.0-alpha 只有两周。这一版的重点已经不只是列式表本身,而是把 PgColumnar 接入更大的数据平台:它开始支持只读 Apache Iceberg,能够通过 S3 兼容对象存储读写数据,并加入维护守护进程,同时继续推进统计信息、查询规划器、性能...

YeSQL:用 24 个可运行查询,一次掌握一个 PostgreSQL 概念

来源: postgr.es 27
学习 PostgreSQL 时,真正困难的往往不是找到语法,而是把一个概念放进真实数据里运行,观察它解决了什么问题。YeSQL 正是围绕这个目标设计的:一套免费的 PostgreSQL 短课程,共 24 节,每节聚焦一个概念,配套一个可运行查询和真实数据,而且无需注册即可使用。 YeSQL 也不只是一个课程原型。它体现了一个更直接的学习方式:让《The...

把 PostgreSQL JIT 生成的 LLVM 代码调试清楚:三个 GUC 的实战用法

来源: postgr.es 37
PostgreSQL 的 JIT 不只是一个“打开或关闭”的性能开关。需要分析生成代码时,可以通过 检查 LLVM bitcode,通过 让 JIT 编译函数能够被 GDB 识别,再用 把这些函数接入 等性能分析工具。三个 GUC 分别解决“生成了什么”“如何调试”和“时间花在哪里”这几类问题。 用于导出 PostgreSQL 为 JIT 编译生成的 ...

PostgreSQL 17:用故障转移槽同步降低逻辑复制切换成本

来源: postgr.es 42
在逻辑复制环境中,主库故障转移并不等于业务可以立即恢复。订阅端依赖逻辑复制槽来记录消费位置;如果这些槽只存在于旧主库,备用库提升后订阅端就可能找不到对应槽,被迫重新建立复制状态,甚至执行完整数据重同步。PostgreSQL 17 引入的 failover slot synchronization,正是为这个切换窗口补上了关键能力:让逻辑复制槽可以在备用...

用幂等键和事务发件箱,彻底避免 Next.js 表单重复提交

来源: postgr.es 31
用户填写表单、点击提交,却迟迟看不到响应。于是他再次点击。问题在于:第一次请求可能已经成功写入数据库,只是响应在网络中丢失了。结果可能是两个潜客、两封确认邮件、两次 CRM 更新,以及两条分析事件。 这不是单纯的前端交互问题,而是一个缩小版的分布式系统问题。浏览器会重试,移动网络会在服务端提交成功后断开,Serverless 函数可能在提交后超时,队列...