PGSimCity 把 PostgreSQL 内部机制做成可探索 3D 模型
讲清 shared buffers、WAL、checkpointer 和 autovacuum 之间的关系,一直是培训里最难的部分。PGSimCity 把这些部件做成一座可以走进去的 3D 城市,缓冲命中、刷盘与垃圾回收以流量呈现。作者 Nikolay Samokhvalov 把版本定在 0.x,明确它不运行 PostgreSQL 源码,数值经过缩放。它适合建立排障的心智模型,不能用来验证某个版本的行为或性能。
保留原始来源与发布日期的新闻、博客和活动。
讲清 shared buffers、WAL、checkpointer 和 autovacuum 之间的关系,一直是培训里最难的部分。PGSimCity 把这些部件做成一座可以走进去的 3D 城市,缓冲命中、刷盘与垃圾回收以流量呈现。作者 Nikolay Samokhvalov 把版本定在 0.x,明确它不运行 PostgreSQL 源码,数值经过缩放。它适合建立排障的心智模型,不能用来验证某个版本的行为或性能。
PostgreSQL 19 的逻辑复制改动有相当一部分出自同一支团队。Fujitsu 盘点了本轮成果:发布端排除指定表、序列的逻辑复制(经 ALTER SUBSCRIPTION … REFRESH SEQUENCES 同步)、update_deleted 冲突检测、按逻辑槽动态调整 wal_level,以及槽同步的跳过统计与失败重试。团队称本轮提交 83 个、审阅 81 个补丁。
数据血缘过去多靠外键加递归 CTE 拼凑,链路一长就难读懂。Cybertec 的 Hans-Jürgen Schönig 给出另一条路:在 PostgreSQL 19 里建一张 edge 表记录行级转换关系,用 CREATE PROPERTY GRAPH 声明属性图,再以 GRAPH_TABLE 用标准 SQL 查到报表。边标签自带语义,审计时比裸外键好解释;当前尚不支持可变长度路径,深层链路仍要用 WITH RECURSIVE。
争论集中在多表统计的锚表由谁指定、n 路连接是否先给实验补丁,以及无索引时回退顺序扫描采样。
WAL 接收进程重启把已写位置回退时,被摘出堆的等待者可能再也收不到通知,改由等待方复查重注册。
Surya Poondla 的原型保留模式和 OID 命名,提供已删对象目录与恢复接口,先按 contrib 扩展做。
WarehousePG 是从 Greenplum 衍生出来的大规模并行分析型数据库。Greenplum 停止开源后,EnterpriseDB 接手维护,继续按 Apache 许可发布,如今在 AWS 上提供。与按用量计费、账单容易失控的云分析平台不同,它按核心数定价,成本可预期,厂商称总体拥有成本最多可降 58%。这类口径需要用自己的负载核算,但对已经用 Greenplum 的团队来说,至少给出一条有人维护的延续路线。
Radim Marek 把 PostgreSQL 的 MVCC 摆上审判席:索引多的表更新一个未加索引的列,每行产生 7.1 条 WAL 记录,精简表只要 3.0;回滚掉的百万行更新让表涨到 178 MB、死元组占 47%;一个空闲事务持着快照就能让全库清理停摆。但换成别的引擎只是换人付账:Oracle 与 InnoDB 的 undo 让读者重建版本,SQL Server 把版本堆进 tempdb,LSM 用持续合并换掉 VACUUM。
备库的冲突解决存在缺陷:ResolveRecoveryConflictWithSnapshot 只调用一次 GetConflictingVirtualXIDs,随后逐个等待返回的虚拟事务号消失。可是在 ProcArrayLock 释放之后,别的后端还能从这些冲突事务里导入快照,产生新的冲突事务号,这个函数完全看不到。后果是备库可能删掉仍被导入快照使用的元组版本或索引项。提议的修法是循环调用直到结果为空。
Jacob Brazeal 报告 datetime_ops 运算符族的一处不一致:在夏令时向前拨的那一小时里,timestamp 之间比较 02:30 小于 03:00,但同一个值与等于 03:00 的 timestamptz 比较时却被判为更大,于是索引扫描、合并连接和分区裁剪都可能给出错误结果。Laurenz Albe 建议把跨类型运算符移出运算符族,Tom Lane 列了几条修法:降级比较、改运算符语义或改转换规则,尚未定论。