来源: postgr.es
35
PostgreSQL 里很多 参数默认都是打开的,用来让优化器在必要时考虑某类执行计划。 有点特别:它默认关闭。原因很直接,分区级聚合可能明显加速按分区表统计的查询,但它也可能让每个分区都产生自己的聚合节点,内存消耗随分区数量放大。这个开关不是“越开越快”,而是一次明确的资源交换。 当查询访问分区表并执行 或聚合函数时,普通计划可能先扫描多个分区,再在...
来源: postgr.es
36
PostgreSQL 20 的开发分支加入了一项很实用的可观测性改进:后端进程级别的锁统计。过去我们可以通过 看到锁等待次数、等待时间、fast-path exceeded count 等信息;这次改动把同类数据下钻到了 per-backend 维度,让排查“到底是哪条连接在等锁、等了多久、是否频繁撞上 fast-path 限制”变得更直接。 很多人排...
来源: postgr.es
26
PostgreSQL 14、15、16 的最新小版本 14.23、15.18、16.14 引入了一个回归问题:在特定 WAL 回放场景下,备库或 PITR 恢复实例可能卡在 相关的 LWLock 等待上。这个问题麻烦的地方不在于“所有人都会中招”,而在于它正好踩中了很多团队的常规补丁流程:先升级 standby,再升级 leader。 目前已知受影响范...
来源: postgr.es
36
7 月 2 日,伊斯坦布尔迎来了第一次 PostgreSQL Meetup。它不是公司发布会,也不是单向宣讲,而是由社区成员为社区成员组织的一次线下聚会。根据活动记录,Bilge Korkmaz Erdim、Gülçin Yıldırım Jelínek 和 Devrim GÜNDÜZ 早就在推动这个想法,最终活动在 Microsoft Turkey ...
来源: postgr.es
24
CloudNativePG 1.30 的一个关键变化,是把应用访问 PostgreSQL 的身份管理往 Kubernetes 原生方向又推了一步:新增 CRD,并内置 TLS 客户端证书签发能力。结果是,应用团队可以用声明式资源管理数据库角色,并通过客户端证书连接 PostgreSQL,不再把数据库密码复制到工单、Secret 模板或 CI 变量里。 ...
来源: postgr.es
38
当 里堆满 文件时,很多人的第一反应是“复制坏了”。但 和 指向的不是流复制本身,而是 PostgreSQL 本地归档进程对 的排队和完成记录。把这层关系拆清楚,排查 WAL 暴涨会快很多。 可以把 WAL 交付拆成三件事: 生成 WAL 传输 WAL 回放或消费 WAL 是“传输 WAL”的一种方式。流复制也是一种方式。逻辑复制也有传输通道,但它传的...
来源: postgr.es
41
在 PostgreSQL 备份工具里,“全量 + 一串增量”几乎是默认想象:上一次备份是下一次备份的父节点,恢复时沿着链条一路重放。pg_hardstorage 选择了另一条路:它没有增量链,而且这是设计目标,不是缺失功能。核心取舍很直接:用更多源端读取 I/O,换一个不容易在凌晨恢复时突然断掉的仓库格式。 链式增量格式看起来很省: 只要每个节点都在,...
来源: postgr.es
30
PostgreSQL 的 看起来像一个普通优化器开关,但它影响的是分区表查询里非常关键的一步:把明显不需要访问的分区从扫描计划中剔除。容易踩坑的地方在于,分区裁剪不只发生在生成执行计划时,也可能发生在执行过程中。排查慢查询时,只看一眼 里的静态计划,往往不够。 分区表的代价来自“可能要看很多张子表”。如果查询条件能明确落在某个分区范围内,数据库就没有必...
来源: postgr.es
41
PostgreSQL 的 经常被简单理解成“清理死数据”。但真正落到一个 8KB heap page 上,它做的事情更细:什么时候只改 ,什么时候回收 tuple 字节,什么时候还不能释放 line pointer,什么时候更新 FSM 和 visibility map。理解这些细节,能解释很多生产现象:为什么表删了一半文件还不变小,为什么 index...
来源: postgr.es
38
这个 GUC 看起来像一个普通的优化器开关,但它背后对应的是 PostgreSQL 并行哈希连接的一条关键分界线:多个 worker 是各自建一份哈希表,还是合力构建一张共享哈希表。这个差异在小表上可能不显眼,一旦参与 join 的构建端变大,内存占用、批处理次数、执行时间都会被放大。 哈希连接通常分两步:先扫描 join 的一侧,按 join key...