选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

PostgreSQL 博览 RSS 订阅

当天收录 22 条。

gistkillitems 重扫描时可能标错死元组

Peter GeogheganPostgreSQL hackers

Peter Geoghegan 指出 gistkillitems() 在 rescan 时可能把 LP_DEAD 标记打到错误的元组上,问题很可能由提交 9c9ddf109 引入,只影响 master,但各版本在 rescan 时都没有正确重置状态。Michael Paquier 和 Andrey Borodin 确认,即便开着 wal_consistency_checking,buildfarm 也没能抓到,因为现有测试没进主回归套件。

共享缓冲区哈希表改用两步删除,按 Buffer 删快三成

Alexandre FelipePostgreSQL hackers

Heikki Linnakangas 指出新的 BufTableDelete() 让 InvalidateBuffer() 持缓冲区头部自旋锁的时间过长。Alexandre Felipe 认为问题不在持锁时长,而在自旋锁下操作的安全性难以论证,提出两步删除:取锁前完成查找,持锁期间只断开链表。他在 Dhruv Aron 的补丁上实现了这一方案,并加了按 Buffer 删除的变体,比按 BufferTag 删除快约 30%。

PL/Perl 处理 tied 对象的缺陷得到系统性修复

Tom LanePostgreSQL hackers

Tom Lane 修掉 PL/Perl 的两个缺陷:hstore_plperl 的空指针解引用,以及处理 Perl tied 对象时的无限循环,两者都不算安全漏洞,未进上一轮安全补丁。修复后取到的却是 SQL NULL,Andrey Rachitskiy 解释 tied hash 不把值放在 HeVAL() 里,必须经 hv_iterval() 加 SvGETMAGIC() 才触发 FETCH,随后提交了覆盖所有转换路径的补丁和回归测试。

pgsonify 把数据库健康状况变成大象叫声

Dinesh KumarCortex Ridge 博客

Dinesh Kumar 用 Go 写了 MIT 许可的 pgsonify,把数据库健康状况变成实时音效。它默认每 5 秒采样 pg_stat_activity、pg_locks、pg_stat_database 和检查点视图,不需要扩展或超级用户权限,据此算出 0 到 1 的压力分,驱动背景轰鸣的音高与节奏,分 CALM、ALERT、PANIC 三档。作者定位于开发、测试和教学,不替代生产监控。

JIT 的两个子开关只应在排查问题时使用

Christophe Pettusthebuild.com

两个参数都默认开启,前者把 WHERE 子句、目标列表和聚合状态转换编译成机器码,后者生成专用的元组解构代码。Christophe Pettus 提醒两者并不对称:解构代码只在编译消费它的表达式时才产生,关掉 jit_expressions 整个 JIT 块就消失了。它们归在开发者选项下,只适合排查时用来判断是不是表达式编译器出错;要控制 JIT 开销应该调代价阈值或整体关闭。