PostgreSQL 资讯
保留原始来源与发布日期的新闻、博客和活动。
vacuum 统计补丁趋于稳定并纳入隔离测试
自定义 OAuth 验证器的 SHOW 行为故意不一致
社区投票倾向移除 bits* 类型定义
postgres_fdw 拟先导入统计再考虑采样
Etsuro Fujita 发现开启 fetch_stats 时对外表分析 ctid 列会引发多余的远程访问。
autovacuum 优先级拟做成一张系统视图
pg_stat_autovacuum_priority 需要 pg_read_all_stats 权限,函数每次都做一次完整的 pg_class 扫描。
读取流的新测试在非断言构建下会失败
commit 020c02bd9 加的测试用了只在 cassert 构建里初始化的 nblocks,Melanie Plageman 已定位。
STORED 生成列的 UPDATE 会吃掉超过 10GB 内存
commit 83ea6c540 之后生成表达式对每一行都要 stringToNode 重新解析,百万行需时约 1.5 分钟。
预备语句执行到第六次会悄悄换成通用计划
plan_cache_mode 默认取 auto:预备语句前五次用带参数值的定制计划,第六次才评估一份通用计划,只要通用计划的代价不高于定制计划的平均代价,本会话此后就固定用它。Richard Yen 用 pgbench 构造了 99.9% 取 Y、0.1% 取 N 的倾斜列:查 Y 时定制计划走顺序扫描,通用计划却按 50% 选择率估算而选了索引扫描,第六次之后永久切过去,于是同一条查询在数据没变的情况下突然变慢。数据分布越倾斜,这个坑越深。
Prairie Postgres 将办第二届开发者峰会
pg_waldump 测试改为探测 tar 是否支持稀疏开关
逻辑复制关停卡死疑因缺少超时检查
行模式识别重做 PREV/NEXT 导航的实现
xl_heap_visible 第 48 版清理后准备推送
REPACK 的 CONCURRENTLY 选项独立成文件
Álvaro Herrera 说 0001 状态良好但要等 0003 一起提交,并发代码收进 commands/repack_worker.c。
按 XID 年龄失效复制槽的补丁进入第 5 版
审阅认为总体可用,但发现活跃槽被 SIGTERM 终止后,walreceiver 会陷入无限重试。
索引预取补丁发布第 18 版并重整代码
Peter Geoghegan 新建 heapam_indexscan.c,加入基于槽的索引扫描接口,并把 VM 查找下沉到 heapam。
好的 CTE 与坏的 CTE 差在统计信息上
PostgreSQL 12 之前 CTE 是硬性的优化栅栏,之后规划器会按写法决定内联还是物化。Radim Marek 归纳:只被引用一次的纯 SELECT 会被内联,谓词得以合并,可读性不再有代价;被多次引用的昂贵聚合物化一次更划算。坏处出在物化上,结果落进临时元组存储,没有 pg_statistic 条目,规划器只能退回默认选择率,连接计划因此走偏甚至溢出内存。结果集很大又要多次引用时,带索引和统计的临时表更稳。
PostgreSQL 19 的 COPY TO 支持 JSON 格式
Andrew Dunstan 在 3 月 20 日提交了 Joe Conway 与 Jian He 的补丁,COPY TO 从此能把查询结果或表数据导成一行一个 JSON 对象的流,写法是 COPY 表名 TO stdout WITH (format json),加 force_array 则包成一个数组。这条路只支持导出,且与 HEADER、NULL、DELIMITER 等文本选项互斥。相比过去用 to_json() 拼装,原生实现不会在嵌套引号上产出非法 JSON。