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

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

PostgreSQL 博览 RSS 订阅

当天收录 18 条。

HighGo 逐段拆解 PostgreSQL 19 的 REPACK 实现

Chao LiHighGo 博客

REPACK 是 PostgreSQL 19 新增的表压缩命令,靠重写存储回收空间,同时保持表的 OID 与目录身份不变。Chao Li 顺着 repack.c 梳理了两种模式:非并发模式全程持排他锁,重写完再建索引;并发模式先在较弱的锁下建好新索引,由后台工作进程从临时复制槽解码 WAL,把拷贝期间的增量重放到新堆,最后才短暂升级排他锁完成切换。并发模式要求表上有副本标识索引或非延迟主键,否则无法定位待重放的更新与删除。

pg_pathcheck 扩展揪出规划器里的隐形悬垂指针

Andrei LepikhovSubstack

PostgreSQL 规划器生成路径时会淘汰下层关系里的 Path,上层结构却可能仍持有指向它的指针。查询结束前没人解引用这些悬垂指针,Valgrind 很难发现;分配器按 2 的幂划分尺寸类,被释放的 Path 转眼被回收成别的节点。Andrei Lepikhov 从一次 postgres_fdw 分片方案的间歇崩溃查起,写了约 600 行 C 的 pg_pathcheck,遍历可达路径校验 NodeTag 与父关系归属两条不变式。

credcheck v4.7 新增超级用户豁免与禁止改密开关

HexaClusterGitHub

credcheck 在建用户、改口令和改名时执行凭证策略,可限定口令字符集、有效期、重用策略与认证失败次数。HexaCluster 发布的 v4.7 新增两个 GUC,一个让超级用户的变更跳过口令策略,另一个禁止修改密码;同时修复了 plpgsql 代码块中执行 CREATE ROLE 时口令有效期的行为。升级后需重启 PostgreSQL 重新加载该库。

pg_dbms_job v2.0 把 Perl 调度器重写为 C 后台进程

HexaClusterGitHub

pg_dbms_job 让 PostgreSQL 以 Oracle DBMS_JOB 的方式创建和调度定时任务,任务体可以是 SQL、plpgsql 代码块或已有存储过程。HexaCluster 发布的 v2.0 把原先独立运行的 Perl 调度守护进程重写成 C 写的 background worker,不再需要额外进程;休眠间隔与任务队列间隔改为可配置,run_duration 列换成 interval 类型。

TigerData 测算每次写入的 3 到 4 倍写放大

Matty StrattonTigerData 博客

写入密集负载下,PostgreSQL 落盘的字节数远多于应用提交的逻辑数据。Matty Stratton 按 1KB 一行测算,堆元组的 MVCC 头、索引维护和 WAL 记录合计产生约 2.5KB 实际写入,每秒 50MB 应用数据会变成 150 到 190MB 磁盘写入。结构性来源是 WAL 二次写入和检查点后的整页写,索引数量再线性叠加,每多一个约增 0.3 倍。调整检查点与精简索引能压到 2.5 倍左右,但消不掉底线。

Vercel 确认客户数据经 Context AI 被窃取

TechCrunchTechCrunch

Vercel 披露了一起客户数据被窃取的安全事件,并把源头指向 AI 编码助手服务 Context AI 此前遭到的攻击。攻击者利用 Context AI 的漏洞劫持了一名 Vercel 员工的账号,进而未授权访问 Vercel 的系统与客户信息,事件期间有敏感客户数据外泄,公司已通知受影响客户并着手加固。这是一条典型的第三方服务横向渗透链路:开发者平台接入的 AI 助手、CI 集成和 OAuth 应用都是攻击面。