PostgreSQL 资讯
保留原始来源与发布日期的新闻、博客和活动。
EXISTS 转 ANY 的子计划将改名 exists_to_any
EXCEPT 发布补丁拟抽出 get_partition_root 函数
监控资源属主变化的断言将在 v19 RC 前删除
Meson 的 LLVM bitcode 支持补丁到 v15
有人提议把 getdatabaseencoding() 改名并补文档
Rocky 10.2 上 libxml2 弃用警告暂无好的修法
日志写入等待事件到 v6,把 openlog() 也包进来
修好 ccache 依赖追踪的 -fpch-deps 补丁已推入
pg_control_checkpoint() 拟一并暴露逻辑解码状态
visibilitymap_clear 的运行时检查回退已提交
AWS 账单缺陷让部分客户看到数十亿美元欠费
Amazon 正在修复,目前尚未公布根本原因和受影响的客户数量。
拟新增 pg_stat_kind_info 视图暴露统计元数据
争议在条目大小该取哪个字段,文档需说明它不等于实际内存占用。
base64url 引入的截断规则回归已修复
填充检查没有区分 base64url 与标准 base64,修复已在 v19 发布前推入。
执行器的堆局部批处理发到第三版
Antonin Houska 质疑强制回调会让不支持批处理的表访问方法出问题。
共享缓冲区专用哈希表补上动态扩缩容
借鉴 dynahash 的线性哈希,桶数与条目数用共享内存里的原子变量记录。
索引预取补丁到 V31,首个补丁再推迟一周
限制 get_actual_variable_range 叶页读取的补丁被排到了 0002 的位置。
GROUP BY ALL 的相关改动已被回退
Tom Lane 等了一段时间无人反对后推送回退,还需从 PG19 发布说明里删掉。
Tiger Cloud 更新:压缩数据上的聚合最高快 70 倍
TimescaleDB v2.26 和 v2.27 给 Tiger Cloud 带来明显提速:压缩数据上的聚合查询最高快 70 倍,压缩 chunk 上的 UPDATE 和 DELETE 最高快 160 倍。企业计划的存储规格提到 80000 IOPS、最大 64 TB。此外 pg_textsearch v1.0.0 在 Postgres 内原生支持 BM25 全文检索,PostgreSQL Source Connector 转入生产可用。
序列刷新的竞态将靠加锁根治,先回退相关提交
commit f38afa4ab 带来一个竞态:sequencesync worker 还在运行时执行 ALTER SUBSCRIPTION ... REFRESH SEQUENCES 会报错,在 valgrind 的慢环境里,worker 因权限不足退出重启之后再执行就会失败。Tom Lane 质疑该提交的设计,认为应该在后端修而不是给测试打补丁。Amit Kapila 提出在 REFRESH 期间加 AccessExclusiveLock,并计划先回退这次提交。
relcache 缓存分区索引父 OID 让 TPS 提升三成
Ayush Tiwari 提议在 relcache 里缓存分区索引的父 OID,减少 INSERT ... ON CONFLICT 在分区表上反复扫描 pg_inherits 的开销,v1 在热缓存下最高快 2.9 倍。Álvaro Herrera 建议改缓存完整祖先列表,但 pg_inherits 变更不触发 relcache 失效,索引重新挂载时会留下脏数据。v2 改为让整个后代索引子树失效,TPS 最高提升 31%。
并行堆 vacuum 补丁到 v20,回调移出表访问方法
Bharath Rupireddy 提交了面向 PostgreSQL 20 的并行堆 vacuum v20。这一版主要回应 Andres Freund 的意见:并行 vacuum 的回调不该放进 table AM 接口,因为 vacuum 本身就是表访问方法内部的操作,于是改为通过 vacuumparallel.c 本地的回调结构体传递。补丁集精简为两个,一个重构堆扫描状态,另一个给 vacuum 第一阶段加并行支持。
PlanetScale 用 768 台服务器解释分片与副本的区别
文章以 256 个分片、每分片一主两副本、共 768 台服务器承载约 1 PB 和数百万 QPS 的设想展开。副本提供读扩展和高可用,却分摊不了主库的 WAL 写入和数据容量;分片把数据和查询分给独立的主库,代理与路由层则要掌握分布规则、连接复用、查询路由、跨分片和故障期间的排队行为。真正的难点在控制面,不是加更多只读副本。
Turso 要用 Rust 核心做一个新的 Postgres 前端
Turso 把自己定位成数据库的 LLVM:一个 Rust 核心承接多个 SQL 前端,SQLite 是第一个,Postgres 是下一个。官方说目标是核心功能兼容而不是 100% 兼容,并设想非进程内连接、浏览器嵌入、单文件和自动更新的物化视图等形态。目前没有发布包,只能从源码构建。名字里有 Postgres 不等于通过了协议和语义验收,把它当生态实验看更合适。