2026-08-18
来源: postgr.es
29
在 PostgreSQL 中,查询是否使用某个索引,与查询是否需要锁住这个索引,并不是一回事。一个容易被忽略的事实是:查询访问一张表时,会为该表的每个索引取得锁,即使最终执行计划完全没有使用其中大部分索引。 这意味着索引不仅消耗磁盘、缓存和写入吞吐,还会占用共享锁表中的条目。对索引数量很多、分区很多或并发事务很长的系统,这种开销可能从“几乎不可见”突然...
2026-08-17
来源: postgr.es
30
OpenBao 需要一个可靠的持久化后端来保存密钥、策略和租约。这里的方案把 OpenBao 运行在 Kubernetes 中,以 CloudNativePG 管理的 PostgreSQL 作为存储层,并通过 TLS 客户端证书完成数据库身份认证。整个链路不保存数据库密码,Kubernetes、CloudNativePG 和 OpenBao 也都属于开...
2026-08-07
来源: postgr.es
55
PostgreSQL 备库回放 WAL 时,日志记录可能指向一个并不存在的页面。正常情况下,数据库会把这视为无法继续保证一致性的严重错误,并以 中止恢复。 能把这类错误降为 ,让恢复继续推进,但它不是常规的高可用开关,而是一次带有数据损坏风险的应急脱困手段。 WAL 回放的前提是:日志描述的变更能够应用到预期的数据页。如果 WAL 要修改某个块,而对应...
2026-08-07
来源: postgr.es
59
当 AI Agent 可以直接查询或修改业务数据库时,权限边界不能只写在提示词里。提示词会漂移,应用过滤条件可能漏写,而 PostgreSQL 行级安全(Row-Level Security,RLS)能够把隔离规则放到数据真正落盘的位置。 一套可信的 RLS 配置不只是执行 。还需要让 Agent 使用非所有者角色、对表启用 、分别声明读写策略,并用“...
2026-08-06
来源: postgr.es
47
企业 AI 最危险的故障,不一定是模型给出了错误答案,而是系统做出了一个重要决定,却没人能在事后解释它是如何发生的。模型可能检索正确、推理合理、选择了正确动作,但外围系统仍会因为超时、重启、重复投递或状态记录丢失而产生错误结果。 这意味着,AI 可靠性不能只靠更强的模型解决。只要 AI 开始修改业务数据、调用外部 API、发送消息或触发审批,它就进入了...
2026-08-06
来源: postgr.es
55
PostgreSQL 已经成为 Agentic AI 的默认数据库,但真正的挑战才刚开始。智能体不再只是读取几张表、生成一段回答,而是在数据库中持续写入记忆、检查点、中间结果、工具调用记录和共享状态。把 PostgreSQL 当成一个“停车场”,只负责把数据放进去,系统很快就会被并发写入、失败恢复和数据膨胀拖垮。 更可靠的做法,是把 PostgreSQ...
2026-08-06
来源: postgr.es
39
CloudNativePG 的 不只可以携带 PostgreSQL operand 镜像,也可以统一描述扩展镜像。这样,Cluster 清单只需要声明想使用的扩展名称,扩展对应的镜像、文件路径和依赖关系都由按 PostgreSQL 大版本维护的 catalog 解析。 这项能力的价值不在于少写几行 YAML,而在于把扩展分发从每个集群的手工配置,提升为...
2026-08-06
来源: postgr.es
59
参加大会 CFP(Call for Papers)评审之后,最容易留下的印象不是某个单独的演讲,而是整个选择过程有多像一次复杂的查询:输入是407份提案和228位演讲者,输出却必须满足主题覆盖、内容质量、公司代表性、性别平衡以及时间安排等多个约束。 这是一份基于公开信息和汇总统计的个人复盘。它不讨论具体提案、评分、委员会意见或私人交流,而是关注评审者如...
2026-08-06
来源: postgr.es
48
当 PostgreSQL 的数据校验和发现页面损坏时,标准答案通常是从备份恢复,或者切换到仍然健康的副本。但现实中可能遇到更棘手的情况:备份不可用,备用节点也无法接管,而业务又急需读取部分数据。 这正是 存在的场景。它可以让 PostgreSQL 在发现校验和错误后继续处理读取请求,但代价是:数据库可能返回已经损坏的数据,甚至在后续操作中放大问题。它是...
2026-08-06
来源: postgr.es
47
看起来只是一个普通的统计查询,但在 PostgreSQL 中, 会改变聚合的执行方式。对于大型事件表,这个变化可能意味着查询从多核并行扫描退化为单进程排序,并把临时数据写入磁盘。 问题不在索引配置,也不在 没有调大,而在于精确去重本身需要一个能够合并的全局状态。理解这一点后,很多 查询都可以通过改写重新获得并行执行能力。 可以用下面的 SQL 创建一个...