↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

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

PostgreSQL 博览 RSS 订阅

每日精选 PostgreSQL、数据库与云计算资讯

37 条

PG19 外键批处理缺陷让约束被误标为已验证

Amit LangotePostgreSQL hackers

Amit Langote 为 PostgreSQL 19 的外键快速路径批处理提交三个修订补丁,起因是 Noah Misch 批评此前把批处理限制在顶层事务。0001 移除该限制,改用子事务标记跟踪缓存条目。0002 修一处数据损坏:PL/pgSQL 的 EXCEPTION 块捕获外键检查错误后 firing_depth 未递减,同一事务里后续的 ALTER TABLE ... ADD FOREIGN KEY 会在有违规行时静默通过。

整库 VACUUM 的权限检查修复接近提交

Bharath RupireddyPostgreSQL hackers

全库 VACUUM 遇到并发删表的修复补丁走到 v8,关键是防止无特权用户对无权访问的关系申请 AccessExclusiveLock。缺少权限检查时,普通用户执行 VACUUM FULL 就能把强锁请求排进队列,阻塞所有新连接。Bharath Rupireddy 指出在 get_all_vacuum_rels() 的 ACL 检查里改用 _ext() 变体可以避开回归。Nathan Bossart 确认数日内提交。

pg_dump 并行 worker 拟在所有平台改用线程

Bryan GreenPostgreSQL hackers

Bryan Green 重整了补丁,把 pg_dump 的并行 worker 统一到线程实现。0001 与 0002 是 Windows 专属改动:fmtId() 的缓冲区改为 _Thread_local,进程内 channel 取代回环 socket。0003 到 0005 依赖 Thomas Munro 的 pg_threads.h 推广到其他平台,删掉 fork() 与 pgpipe(),64 个 worker 的上限也一并取消。

pg_buffercache 拟加按关系汇总函数,快约 25 倍

Khoa NguyenPostgreSQL hackers

pg_buffercache 正在讨论新增 pg_buffercache_relations(),把按关系的缓冲区聚合放到 C 层完成。Khoa Nguyen 在 shared_buffers 为 400GB 的机器上测 v2 补丁,比 SQL 侧聚合快约 25 倍。v3 把 usagecount_avg 换成 usagecount_total,并加上 work_mem 上限控制。超限时报错还是只写进文档,目前仍有分歧。

PostgreSQL 20 拟把 OpenSSL 最低版本提到 3.0

Michael PaquierPostgreSQL hackers

Jacob Champion 和 Michael Paquier 一致认为把 OpenSSL 3.0 定为 PostgreSQL 20 的最低要求合理,这意味着放弃 1.1.1。Michael 指出 OpenSSL 3.0 自身将在 2026 年 9 月停止维护,但对 PG20 可以接受。Jacob 原以为 3.0 会像 1.0.2 那样被发行版长期保留,RHEL 中途升到 3.5 出乎意料。Tom Lane 认为动因是后量子密码学。

hackers 讨论用 TOML 或 JSON5 重写 pg_hba.conf

Zsolt ParragiPostgreSQL hackers

Zsolt Parragi 提议用结构化格式替换 pg_hba.conf、pg_ident.conf 这些配置文件,候选是 TOML 和 JSON5。Matthias van de Meent 反对 TOML,理由是依赖上下文的表语义不适合配置文件。Andrew Dunstan 认为在现有解析器里加 JSON5 改动很小,主要在词法分析器。Greg Sabino Mullane 要求先给出默认 pg_hba.conf 在新格式下的样子。

Neon CLI 新增 neon api 命令面向 agent 自动化

Anthony GiulianoNeon 博客

Neon 给自家 CLI 加了 neon api 命令,同时解决两个问题:面向人设计的 CLI 通常落后于底层 API 的完整能力,而让 AI agent 直接调用原始 API 又有泄露密钥的风险。新命令把 API 访问包成可预期的受控调用,保留完整能力的同时把凭证留在 CLI 一侧。作者 Anthony Giuliano 称它更适合 agent 驱动的自动化工作流。

Amazon Aurora DSQL 的变更数据捕获正式可用

AWSAWS What's New

AWS 在 7 月 8 日宣布 Amazon Aurora DSQL 的 change data capture 一般可用。分布式 SQL 数据库缺少稳定的变更捕获就很难接进真实的生产数据流,CDC 转入 GA 意味着 Aurora DSQL 开始补齐从 OLTP 到事件、分析和搜索系统的下游链路。在它与 Aurora PostgreSQL 之间选型时,可以把 CDC 是否生产可用一并纳入评估。

34 条

PostgreSQL ODBC 新版修掉栈溢出与双重释放

PostgreSQL ODBCPostgreSQL 新闻

PostgreSQL ODBC 驱动发布 REL-18_00_0002,修的多是安全问题:getPrecisionPart() 里的栈缓冲区溢出、SQLDisconnect 清理阶段的 double-free 堆损坏,以及多处越界读取,日志里也开始屏蔽敏感连接参数。功能上升级到 OpenSSL 3.5.5,修正了 SQLPrimaryKeys 误把 INCLUDE 列纳入结果,并拒绝非法游标名。用 ODBC 连 PostgreSQL 的应用值得尽快跟进。

备库 OID 重用会让 17.6 反复致命崩溃

Bertrand DrouvotPostgreSQL hackers

有用户报告 PostgreSQL 17.6 反复 FATAL 崩溃,信息是 trying to drop stats entry already dropped。Bertrand Drouvot 用自定义扩展手动指定下一个 OID,复现了 OID 重用的场景。根因在备库:某后端持有该 pgstat 条目的本地引用,第一次 DROP 回放时它被标记为已删除却无法释放,第二次 DROP 又撞上同一个 OID,于是触发 FATAL。修复提交 850b9218c8e 已回合稳定分支。

视图上组合两个特性会让 PG19 解引用空指针

Paul JungwirthPostgreSQL hackers

在视图上同时用 FOR PORTION OF 更新和 INSTEAD OF 触发器,会让 PostgreSQL 19 解引用空指针。修法是禁掉这个组合,争的是该在哪一步拦:解析、重写还是执行。Paul Jungwirth 起初认为解析阶段够用,因为 relcache 失效会强制重新解析;Tom Lane 纠正说视图是以重写规则的形式存在磁盘上的,后续重写并不会触发重新解析。Paul 随后用测试验证了解析阶段拦截会让服务器崩溃,重写和执行阶段都能正确挡住。

用检查约束换来非分区列上的分区裁剪

Haki Benitahakibenita.com

分区裁剪通常只在按分区键过滤时才生效,按别的列查就得扫遍所有分区。Haki Benita 给出的办法是用检查约束把数据分布告诉优化器:给每个分区上一条形如 session_id BETWEEN 1 AND 4320 的约束,优化器就能靠约束排除法把不相干的分区剪掉。遇到离群值可以写成析取形式的约束,思路借自 PG14 的多区间 BRIN 操作符类;找连续区间用 gaps and islands 那套写法。前提是数据只追加、且过滤列与分区键强相关。

pglayers 把 53 个扩展做成可叠加的镜像层

pglayersPostgreSQL 新闻

pglayers 把 53 个 PostgreSQL 扩展分别打成从 scratch 构建的最小 Docker 镜像层,用 COPY --from 就能叠到官方 PostgreSQL 镜像上,不必自己编译或装包,项目也提供包含全部扩展的预构建镜像。支持 PostgreSQL 17、18、19 与 amd64、arm64。对 18 及以上版本,它借 extension_control_path 做隔离布局,避免文件冲突,允许同一个库多版本共存。

PDU 在实例起不来时直接从数据文件捞数据

PDU 项目PostgreSQL 新闻

实例起不来的时候,常规 SQL 工具都用不上。PDU 直接读数据文件和 WAL 归档,不修改原始数据目录,在离线状态下重建库、schema 和表的元数据,把单表、整个 schema 或整库导出成 CSV。对误删误改,它还能从 WAL 记录或归档里还原受影响的行,不依赖 VACUUM 之前残留的元组。支持 PostgreSQL 14 到 18。作者把它定位成应急恢复的辅助手段,不能替代常规备份或时间点恢复。

Barman 3.19 让标准恢复命令直接用上云端备份

EDBBarman

Barman 是 EDB 维护的 PostgreSQL 远程备份与灾难恢复工具,基于时间点恢复,让 DBA 在一处管理多台远端服务器的备份目录和恢复流程。3.19.0 与 3.19.1 分别发布于 5 月 20 日和 26 日,本次一并公告。3.19.0 的重点是云存储恢复:标准的 barman restore 命令现在可以直接用于云上备份;同时引入了备份的导出与导入命令,另有若干改进和缺陷修复。3.19.1 是在此基础上的修复版本。

Autobase 2.9.0 把日常集群管理搬进界面

vitabaksAutobase

Autobase 2.9.0 把重心放在部署之后的日常管理。认证从共用一个访问令牌改成按邮箱和密码的独立用户,操作日志随之记录每次变更由谁执行,审计链条补齐。PostgreSQL 参数、pg_hba.conf 和连接池配置现在都能直接在界面里改,专家模式还内置了带 diff 的 YAML 编辑器,应用前可以先看变更。Autobase 面向自托管环境,目标是在自有基础设施上提供接近 DBaaS 的 PostgreSQL 管理体验。

PgDog 解释为什么还要再写一个连接池

PgDogPgDog 博客

PgDog 用一篇文章解释为什么还要再写一个连接池:它想把连接池化、路由、分片和运维手感放在同一个代理层里解决,而不是让用户各拼一套。PostgreSQL 的规模化瓶颈常常不在某条 SQL,而在连接数、代理、拓扑和运维控制面。文章在 Hacker News 上热度不低,说明社区确实还想要一个比 PgBouncer 更贴合分片与云环境的 Postgres 原生代理。选型时仍要看清它与 PgBouncer、Odyssey、pgcat 在成熟度和运维经验上的差距。

31 条

存储层删错文件的缺陷已修进主干

Heikki LinnakangasPostgreSQL hackers

Heikki Linnakangas 已把一处存储层的错删修复推进 master。mdunlinkfiletag 本该按传入的 fork 与段号删文件,实际删掉的却是主 fork 的第 0 段。Thomas Munro 建议反过来做:不去泛化 register_unlink_segment(),而是拿掉它的 fork 与段参数,因为外部代码没有理由往 md.c 的队列里塞删除请求。Matthias van de Meent 确认那条分支只在主 fork 上才走到。

导入畸形范围直方图会算出负选择率甚至崩溃

Ewan YoungPostgreSQL hackers

Ewan Young 报告 pg_restore_attribute_stats() 接收范围边界直方图时不做校验。compute_range_stats() 维持着两条不变式:直方图里不能有空 range,上下界都要升序排列。range 与 multirange 的选择率估算器依赖这两条,一旦被违反,轻则算出错误甚至为负的选择率,重则在带断言的构建里直接让进程崩溃。补丁改为导入时校验直方图,对不合法输入以 WARNING 拒绝,与其他统计信息的处理方式一致。

索引预取补丁 V29 让点查询少调一次接口

Peter GeogheganPostgreSQL hackers

Peter Geoghegan 发出索引预取补丁的 V29,因为 V28 已经打不干净。这一版有两项微优化:索引访问方法可以在 amgetbatch 返回时直接设置 knownEndBackward 与 knownEndForward,让简单点查询只调一次 amgetbatch;索引元组计数改成每批计一次而不是每元组一次,语义与位图索引扫描一致。V29 还带了一个 EXPLAIN (ANALYZE, IO) 补丁,索引扫描做 IO 预取时可以看到读流的诊断信息。

有人提议把共享缓冲区的查找表换掉 dynahash

Dhruv AronPostgreSQL hackers

来自 Databricks 的 Dhruv Aron 提议把共享缓冲区的查找表从 dynahash 换成专用哈希表:目录、段、桶链、空闲列表那几层结构,对这个固定大小的场景太重了。基准显示插入、查找和删除都明显变快。Heikki Linnakangas 确认目录这层间接对所有共享内存哈希表都多余,因为它们都不支持动态扩容,新表内存占用也小得多。他同时担心 InvalidateBuffer() 持自旋锁的时间变长,要求补上大量哈希冲突下的最坏情况基准。

PostgreSQL 18 的四项逻辑复制改进落到 RDS

Ramdas GutlapalliAWS Database 博客

AWS 的 Ramdas Gutlapalli 梳理了 PostgreSQL 18 在逻辑复制上的四项改动。新的发布参数 publish_generated_columns 让 STORED 生成列可以进入复制流;pg_stat_subscription_stats 增加七个冲突计数器,把笼统的错误数拆成按冲突类型统计;新订阅的 streaming 默认值改为 parallel;新增 idle_replication_slot_timeout,自动废弃长期闲置的复制槽。

用 CloudNativePG 分布式拓扑做跨区域容灾

Wellingtone LuvongaCybertec 博客

Cybertec 的 Wellingtone Luvonga 演示了怎么用 CloudNativePG 的分布式拓扑在多个 Kubernetes 集群之间做跨区域容灾。方案拿 MinIO 当兼容 S3 的对象存储,主集群用 barman-cloud 插件持续归档 WAL,副本集群轮询同一份对象存储完成初始化并保持同步。两点要注意:复制延迟取决于对象存储吞吐而非直连流复制,主副集群还必须跑完全相同的 PostgreSQL 与 operator 版本。

KVM 影子 MMU 逃逸漏洞公开 PoC

V4belJanuscape

Januscape 公开了一个 x86 KVM 影子 MMU 的 guest 到 host 逃逸问题,编号 CVE-2026-53359,影响范围从 2010 年 8 月的提交一直到 2026 年 6 月 16 日的修复提交。已公开的 PoC 足以让 guest 触发宿主内核 panic,作者称完整可控的逃逸利用存在但未发布。接收不可信 guest、又开了嵌套虚拟化的环境风险最高。跑 KVM 的团队应确认宿主内核是否包含提交 81ccda30b4e8,必要时先关掉嵌套虚拟化。

29 条

PostgreSQL JDBC 42.7.12 修复通道绑定静默降级

JDBC ProjectPostgreSQL 新闻

pgJDBC 42.7.12 修复 CVE-2026-54291。连接参数写了 channelBinding=require 时,握手仍可能从带通道绑定的 SCRAM-SHA-256-PLUS 静默降级为普通 SCRAM-SHA-256,中间人防护就此失效。成因有两处:内置 SCRAM 客户端库无法为某些证书推导通道绑定哈希时返回空字节数组而不报错,pgJDBC 的认证器又没强制执行该要求。受影响的是 42.7.4 到 42.7.11。

pg_dump 目录格式被指存在路径遍历风险

Daniel GustafssonPostgreSQL hackers

pg_dump 的目录格式存在路径遍历风险:攻击者构造恶意的 toc.dat 或 blobs_*.toc 条目,就能把写入路径指到任意位置,例如让 blob_16388.dat 落到上级目录的 /etc/passwd。Dilip Kumar 提出直接匹配 . 和 .. 两个字符串,Daniel Gustafsson 指出这盖不住嵌在路径中间的 .. 序列,主张改用更精确的模式匹配,并补上恶意 TOC 文件的测试。

Robert Haas 要求回退冲突日志表的预备补丁

Robert HaasPostgreSQL hackers

逻辑复制冲突日志历史表的预备补丁 a5918fd 刚进主干,Robert Haas 就提出两处设计问题。其一,在 try/catch 中途暂存错误再调用 AbortOutOfAnyTransaction(),若调用栈上还有未执行的 catch 块,行为不可预期。其二,往冲突日志表插入记录本身失败时,这张表会与被复制的表永久失去同步。他认为方案从根上就有缺陷,呼吁回退提交并重新设计。

PostgreSQL 20 将提供按后端统计的锁信息

Hubert Lubaczewskidepesz.com

Bertrand Drouvot 编写、Michael Paquier 于 6 月 30 日提交的这个特性,给 PostgreSQL 20 加上按后端统计的锁信息。新函数 pg_stat_get_backend_lock() 接收一个进程号,按锁类型每种返回一行,字段有 locktype、waits、wait_time 和 fastpath_exceeded。它与 pg_stat_activity 连接后就能看到某个连接实时的锁等待行为,补上了聚合视图看不到单连接的短板。

PG14 到 16 最新小版本回放旧 WAL 会自死锁

Michael Banckcredativ 博客

5 月 14 日发布的 PostgreSQL 14.23、15.18、16.14 带来一个复制死锁:备库或时间点恢复实例回放由 14.20、15.15、16.11 及更早版本产生的 WAL 时,startup 进程会在 MultiXactOffsetSLRU 锁上自死锁,pg_stat_activity 里表现为该锁的等待事件,恢复就此挂住。修复已在 5 月 27 日提交,下个小版本计划 8 月 13 日发布。在那之前可退回第一季度版本,或分两步升级。

CloudNativePG 1.30.0 引入声明式角色管理

CloudNativePG 贡献者CloudNativePG

CloudNativePG 1.30.0 新增 DatabaseRole CRD,用声明式、适合 GitOps 的方式管理 PostgreSQL 角色,并引入基于 Kubernetes Lease 的主节点选举以提升故障切换安全性。安全方面修掉两个漏洞:CVE-2026-55769 靠固定 search_path 防止权限提升,CVE-2026-55765 在建角色和改角色前把明文口令转成 SCRAM-SHA-256。

pg_ivm 1.15 让 IMMV 熬过 dump 与大版本升级

IVM Development Grouppg_ivm

pg_ivm 提供可增量维护的物化视图 IMMV。IVM Development Group 发布的 1.15 最要紧的变化是支持 pg_dump 与 pg_upgrade 场景下的元数据恢复:还原数据库或大版本升级之后不必再手动删掉重建 IMMV,新增的 pg_ivm_dump_metadata 工具和 restore_immv() 函数会把元数据恢复回来。这一版还修掉外连接视图维护时的段错误。

pg_hardstorage 用内容寻址存储替掉增量链

Hans-Jürgen SchönigCybertec 博客

pgBackRest、Barman 这类工具的增量链有个脆弱之处:链上任何一个备份损坏或被删掉,下游备份就全部作废,而这种事往往等到凌晨三点恢复时才发现。Hans-Jürgen Schönig 解释 pg_hardstorage 为何干脆不做增量链,改用内容寻址存储:每个数据块以 SHA-256 哈希为标识,不同备份共享相同的块,删掉任意一个都不影响其他备份。一套 487 GiB 的生产库按小时备份一周,去重率 87.5%。

20 条

PG19 外键快速路径的批处理修复被指不彻底

Noah MischPostgreSQL hackers

PostgreSQL 19 为外键检查加了快速路径,批量操作下暴露出越界写入和漏掉约束检查的问题,提交 4113873 的做法是把批处理限制在顶层事务。Noah Misch 反对这个修法:用到 SAVEPOINT 时会带来约 1.6 倍的性能回退,也偏离了按子事务跟踪资源的惯例,代码并未变简单。他主张改成按子事务跟踪批处理来源,并指出 AfterTriggerEndSubXact() 没有重置 firing_depth,捕获触发器错误后外键校验可能被错误路由。

页面级清理:VACUUM 之前先发生的那一步

Radim Marekboringsql.com

Radim Marek 拆解了堆页内部的清理过程。页面剪枝只在单个堆页里回收死元组占的字节并推进 pd_upper 做碎片整理,普通 SELECT 碰到 HOT 链时就会顺手做,VACUUM 的第一阶段也对每个页做一遍。有索引时行指针走 LP_NORMAL 到 LP_DEAD 再到 LP_UNUSED,无索引时一步到位;LP_DEAD 表示空间已回收但 TID 仍被索引引用。HOT 链的头指针会转成 LP_REDIRECT,索引顺着它找到当前版本,从而完全省掉索引更新。

PostGIS 3.7.0alpha1 发布,弃用 PG12 与 13

PostGIS 团队PostGIS

PostGIS 团队发布 3.7.0alpha1,要求 PostgreSQL 14 到 19beta1、GEOS 3.10 以上、Proj 6.1 以上。这一版丢掉了对 PostgreSQL 12 与 13 的支持,把 address_standardizer 和 tiger_geocoder 移出主仓库;拓扑函数把容差 0 当作字面零,按精度取容差要改写 -1。新增 ST_CoverageEdges、ST_MinimumSpanningTree 等函数。

credcheck 5.0 让密码历史支持复制感知

HexaClusterHexaCluster

credcheck 在创建用户、改密码和改名时执行统一的凭据规则,涵盖复杂度、历史复用、最短有效期、认证失败次数与首次登录强制改密。HexaCluster 发布的 5.0 是大版本更新,新增 PostgreSQL 19 兼容性,并让密码历史机制具备复制感知能力;打开 credcheck.superuser_nocheck 后超级用户的建角色与改角色会跳过检查。升级后需要重启 PostgreSQL 才能重新加载该库。

pg-cdc 把 WAL 直接写成 S3 上的 Iceberg 表

burnside projectPostgreSQL 新闻

burnside project 开源的 pg-cdc 读取 PostgreSQL 的 WAL,把变更以 Apache Iceberg 表的形式写入 AWS S3,并自动在 Glue Catalog 注册表,用 Lake Formation 的标签控制读取,消费方走 IAM 认证,不需要数据库账号密码。工具只有一个二进制,不依赖 JVM;数据流严格单向,架构上不存在回写生产库的路径。每次刷新生成一个 Iceberg 快照,可以对 CDC 历史做时间旅行查询。

sqlite-utils 4.0rc2 记录了一次真实的模型协作

Simon WillisonSimon Willison 博客

Simon Willison 发布 sqlite-utils 4.0rc2,其中大量工作由 Claude Fable 辅助完成,他估算未计补贴的成本约 149.25 美元,又让 GPT-5.5 做交叉审查,找出两个与事务和 RETURNING 相关的问题。这是一份高水平开发者用强模型做真实开源发布的完整账目:产出确实有,但审查成本同样真实。对数据库工具而言可借鉴的是,价值不在于让模型一口气写完,而在于让不同模型、测试与人工复核专门盯住事务、副作用和文档承诺。

22 条

Ubicloud 为 Postgres 选择严格内存 overcommit

Burak YucesoyUbicloud 博客

OOM killer 杀掉正在改共享内存的后端进程时,共享内存可能停在不一致状态,有损坏已存数据的风险;postmaster 随即终止所有后端,重启还要跑崩溃恢复。Ubicloud 的 Burak Yucesoy 说明他们把 vm.overcommit_memory 设为 2,用分配阶段的 ENOMEM 换掉这种又晚又暴烈的失败,vm.overcommit_kbytes 取总内存的 80% 加 2GB。代价是机器混跑别的负载时,数据库也会被牵连着拿到 ENOMEM。

psql 的 \d tablename 退化成了顺序扫描

Jelte Fennema-NioPostgreSQL hackers

提交 85b7efa1cdd 带来一处回归,psql 的 \d tablename 从索引扫描退化成顺序扫描,目录一大就明显变慢。Andres Freund 最先发现,Jelte Fennema-Nio 定位根因并给出恢复索引扫描的补丁。Tom Lane 审查后认为方向正确,但必须同时检查两个排序规则是否都是确定性的,只查一个不够。他还指出原提交说明有几处不准确:问题只影响精确匹配而不影响前缀匹配,正则表达式和 LIKE 模式都会中招。修订后的 v2 补丁已附在邮件里。

全局临时表补丁 v6 修掉一处数据损坏

Dean RasheedPostgreSQL hackers

Dean Rasheed 发布全局临时表补丁的 v6,修掉了 Nico Williams 借助大模型辅助审查找出的一批问题。最要紧的一处会造成数据损坏:TRUNCATE 把会话级的冻结 XID 错误写进了共享的 pg_class。其余包括 vacuum.c 的未初始化变量、少拿 ProcArrayLock、事务结束时没重置的计数器。设计上 v6 把 pg_class 里全局临时表的冻结 XID 一律置零,只更新 pg_temp_class。

enable_parallel_append 管的是分区之间的并行

Christophe Pettusthebuild.com

Parallel Append 让不同工作进程同时扫描不同的分区或 UNION ALL 分支,而不是全挤在同一个子节点上,是分区之间的粗粒度并行。Christophe Pettus 指出它还能混用可并行与不可并行的子节点,普通 Append 做不到,对只有非并行索引的分区表尤其有用。参数默认打开。小查询并行后反而变慢时,可以临时关掉确认是不是启动开销盖过收益,但正确的收尾是更新统计、调 parallel_workers 或代价阈值,再改回默认。

攻击者借 Langflow 漏洞自动化勒索数据库

SysdigSysdig 博客

Sysdig 记录了一条名为 JADEPUFFER 的攻击链:入侵者利用 Langflow 的漏洞拿下实例,再自动化地对能触达的数据库实施勒索。这类 AI 与低代码工具往往被快速部署到公网,权限给得很大,硬化和补丁都跟不上,于是成了攻击者优先挑的软柿子。可行的对策是把 agent 与 flow 类服务默认放回内网、强制认证、限制出站访问,把数据库凭据与服务隔离开,并把它们纳入常规漏洞扫描,而不是当试验品放着不管。

34 条

Postgres 19 支持在线开启数据校验和

Shaun ThomaspgEdge 博客

数据校验和能发现存储层悄悄损坏的页,过去只能在初始化集簇时决定开关,事后转换要用 pg_checksums 停机离线跑,中断还无法续跑。PostgreSQL 18 已把校验和设为新集簇默认,19 再提供 pg_enable_data_checksums(),由后台工作进程在线遍历数据页完成转换,并像基于代价的 VACUUM 一样限速。data_checksums 参数会显示转换进度,关闭时不重写页面,几乎瞬时完成。

执行器批处理补丁改用扫描槽内嵌批次

Amit LangotePostgreSQL hackers

PostgreSQL 执行器一次只处理一行,扫描节点的每行开销在分析型查询里格外明显。Amit Langote 发出执行器批处理补丁第 8 版,相比上一版重新设计:批次直接内嵌在扫描槽里,新增两个 TableAM 回调,去掉 RowBatch 容器、executor_batch_rows 参数和 EXPLAIN BATCHES 输出,批次固定为堆表一页的可见元组。本轮只改造顺序扫描,count(*) 在全可见页上快 20–21%。

REPACK CONCURRENTLY 生成列报错已修复

Álvaro HerreraPostgreSQL hackers

REPACK CONCURRENTLY 在含生成列的表上会失败,并发出现非 HOT UPDATE 时报出找不到列的生成表达式。Álvaro Herrera 已提交修复,把 catalog 行的复制限制在并发模式下。同一轮还改了 updatedCols 的构建,忽略已删除的列:它们不可能是索引键列,标记为已更新在语义上就是错的。Ewan Young 用注入点测试验证了两处修复,后一处只轻微影响 btree 索引提示。

effective_io_concurrency 调高会耗尽本地缓冲区

Induja SreekanthanPostgreSQL hackers

把 effective_io_concurrency 设到 64 或更高之后,对带 TOAST 数据的临时表做顺序扫描,ReadStream 的预读会把全部本地缓冲区 pin 住,TOAST 索引查找随即报出没有空闲本地缓冲区。Induja Sreekanthan 给出复现步骤和补丁,把 max_pinned_buffers 限制为本地缓冲区的 75%。根因与另一个已知缺陷相同,PostgreSQL 19 已把预读预算削到四分之一,是否回合 18 待定。

enable_nestloop 该临时关掉而不是长期关掉

Christophe Pettusthebuild.com

嵌套循环是唯一能配合任意连接条件的方式,不等值连接和交叉连接都只能靠它,所以 enable_nestloop 默认打开。Christophe Pettus 在 GUC 逐项解读系列里写道,它出问题的典型形态是规划器以为外侧只返回五行,实际来了几十万行,本来便宜的索引查找被执行几十万次,查询从几毫秒拖成几分钟。临时关掉可以确认病灶,但病根是基数估算偏差,该去 ANALYZE、调统计目标或建扩展统计。

DBOS 主张把工作流状态放进同一个 Postgres

DBOSDBOS 博客

工作流引擎通常自带存储,与业务数据分处两地,一致性只能靠补偿逻辑维持。DBOS 的这篇文章主张把 workflow 状态与应用数据放进同一个 Postgres,用一次数据库事务解决其中一部分分布式系统复杂性,durable execution 和 agent 工作流因此重新向数据库靠拢。文章原发于 6 月 15 日,7 月初重新热起来。真这么用,先撞上的通常是运维边界:队列表膨胀、VACUUM 压力和长事务持锁。