PostgreSQL 资讯
保留原始来源与发布日期的新闻、博客和活动。
并行 autovacuum 测试的时序问题已修
终止信号信息改用统一的 pg_signal_info 结构
新方案把发送方信息作为参数传给处理器,UID 用 0 表示未知的做法仍有争议。
WAIT FOR LSN 的收尾补丁整理成五个部分
Andres Freund 建议改用带内存屏障的原子读写,并补上时间线切换等场景的测试。
REPACK 的锁升级方案之争仍未收敛
标志位加 CheckTableNotInUse() 的做法被指漏洞太多,也会误伤 LOCK TABLE 这类操作。
autovacuum 评分视图的内存占用改用新参数
十万张表约占 16MB,最终采用 will_free 指针,让调用方决定能否显式释放条目。
跨会话访问临时表的防护被读流绕开
改用 read_stream_next_buffer() 后跳过了检查,将在读流开始与 StartReadBuffers 各补一处。
表膨胀会在高频写入下悄悄扩散
高频写入下,UPDATE 和 DELETE 留下的死元组积累速度会超过 autovacuum 回收的速度,页面碎片化,性能一路下滑。Jake Hertz 指出默认设置要等 20% 的行发生变化才触发清理,对大表意味着可以攒下几百万条死元组。文章给了测量膨胀率的查询,并建议把上亿行的高写入表的 autovacuum_vacuum_scale_factor 降到 0.01 到 0.02,让清理跑得更勤。
pgcollection 2.0 支持整数键与范围删除
pgcollection 用关联数组帮 Oracle PL/SQL 代码搬到 PostgreSQL。2.0 新增整数键的 icollection,只存显式设过的键,避开原生数组用 NULL 填补稀疏下标的问题,键是 64 位整数、值可以是任意类型。delete() 现在支持删单键、删区间和清空并保留类型。要注意 Oracle 会自动给字符串键排序,pgcollection 保持插入顺序,需要时得自己调 sort()。
pg_prewarm 在超大 shared_buffers 上会崩溃
PostgreSQL 的 palloc 对单次分配有 1GB 硬上限,而 autoprewarm 转储缓存页时要一次分配整个数组,每条记录 20 字节,算下来 shared_buffers 超过约 429GB 就会越界。700GB 的机器需要约 1.75GB,于是报出 invalid memory alloc request size,后台进程随即陷入每分钟数百次的重启循环。根治要升到 PostgreSQL 16.10 以上。
PostgreSQL 19 新增三个 pg_get_*_ddl 函数
Andrew Dunstan 在 4 月 5 日提交了三个函数:pg_get_database_ddl()、pg_get_role_ddl() 和 pg_get_tablespace_ddl()。它们都返回 SETOF text,用变参的名值对传选项:pretty 分行排版,owner 带上属主,memberships 输出角色的 GRANT。两点限制要记住:输出里不会包含密码,函数也只重建对象本身,不含库内的表、视图等对象。
WAIT FOR LSN 的初始化补丁继续拆分
pg_plan_advice 的重试补丁获 RMT 批准
构建农场机器报出错误的 TSC 频率
JSONB 提取优化拆成五个补丁推进
日志截断参数定名 log_statement_max_length
审查建议只在真正记日志的路径上调用截断,回归测试也从 pg_ctl 套件挪走。
FreeBSD 上 walsender 的关闭超时会失效
pq_flush() 卡住导致回不到超时检查,建议改用 pq_flush_if_writable()。
REPACK 用标志位规避锁升级死锁遭反对
Andres Freund 认为许多取锁路径绕开检查,应让死锁检测器真正理解锁升级。
槽同步进程改用 SIGTERM 已回补到 17 与 18
回补带出 ABI 问题,新信号将挪到 ProcSignalReason 枚举末尾以免打乱既有取值。
autovacuum 评分视图提交后报出重复释放
同一查询里多次调用评分函数会触发 double pfree,讨论转向为统计接口做更大改动。
AWS 把统一 JSON 搜索拆给六个服务
Ezat Karimi 的思路是不指望单一数据库扛下所有 JSON 场景。以视频平台为例,实时用户状态放 DynamoDB,影片目录放 DocumentDB,计费用 Aurora PostgreSQL 保证 ACID,数据湖落 S3,分析用 Redshift 的 SUPER 类型,内容发现交给 OpenSearch。各服务之间靠 OpenSearch Ingestion 做快照加持续变更捕获,在可接受的窗口内保持最终一致。
迁到 TimescaleDB 的最佳时机是一千万行
Matty Stratton 给了一个时间点:一千万行左右迁移只是一个周末的活,拖到五亿行以上就变成几名工程师做几周的项目。他把中间这段时间的查询调优、扩机器和处理故障叫作优化税,是维持原生 PostgreSQL 性能的隐性开销。TimescaleDB 的原生压缩和自动分区把这部分负担去掉。文中没有给出具体基准,判断仍应结合自己的写入速率与查询形态。
边缘 AI 把 PostgreSQL 当作事实来源
Vibhor Kumar 主张边缘 AI 的记录系统不能是概率性的:每个站点跑一个本地 PostgreSQL 作账本与策略边界,热数据留在本地,云端只做汇总、跨站分析与治理,两者之间靠 outbox 队列异步同步。落地要点包括用 INSERT ... ON CONFLICT 配稳定事件 ID 做幂等、把冲突规则写明而不是简单地后写覆盖、向量检索按租户与站点加上权限约束。他提醒 pgvector 0.8.2 的安全修复要尽快打上。