PostgreSQL 技术日报 (4月4日)|PG 工具更新与内核补丁速递
🔔 关注【IvorySQL开源数据库社区】公众号即可获取 PostgreSQL 一手干货与最新动态

⚙️ PostgreSQL技术文章
🧩 tree-sitter-postgres、libpgfmt、pgfmt 和 libpgdump

一名开发者发布了四个基于 Rust 的 PostgreSQL 工具。tree-sitter-postgres 是 SQL 和 PL/pgSQL 的语法解析器,通过从 PostgreSQL 的 Bison 源文件自动生成代码,使其更容易跟上 PostgreSQL 版本更新。libpgfmt 是用于格式化 SQL 和 PL/pgSQL 代码的 Rust 库,支持多种样式预设,包括 aweber、dbt、gitlab 等。pgfmt 是基于 libpgfmt 构建的命令行工具,用于格式化和检查 SQL 代码。libpgdump 是用于读写 PostgreSQL 转储文件的 Rust 库,支持自定义、目录和 tar 格式,是作者现有 pgdumplib 项目的 Rust 移植版本。
https://www.postgresql.org/about/news/tree-sitter-postgres-libpgfmt-pgfmt-and-libpgdump-3263/
🧩 pg_textsearch v1.0

pg_textsearch v1.0 已正式发布,这是一个基于 Postgres 许可证的开源 PostgreSQL 扩展。该扩展提供现代化的 BM25 排序关键词搜索功能,具备快速索引和高性能查询能力。根据发布声明,在大规模信息检索数据集上的基准测试结果显示,相比使用更严格 AGPL 许可证的 ParadeDB,该扩展具有显著的性能优势。这个由 Timescale 开发的扩展旨在为 PostgreSQL 用户提供最先进的全文搜索功能。
https://www.postgresql.org/about/news/pg_textsearch-v10-3264/
🧩 PostgreSQL CDC 进阶:Estuary 新增只读模式、IAM 身份认证和分区支持

Estuary 发布了 PostgreSQL 连接器的重要更新,增强了变更数据捕获(CDC)功能。新的只读模式不再需要水印表,并支持从 PostgreSQL 备用副本进行捕获,这需要 PostgreSQL 16 以上版本并启用逻辑解码和 hot_standby_feedback 设置。源端和目标端连接器现在都支持 IAM 认证,适用于 AWS、GCP 和 Azure 平台,无需管理静态数据库凭据。新增的"按分区捕获分区表"设置允许将每个分区作为独立流进行捕获,为分区数据流提供更精细的控制。这些更新通过改进的安全性和运营灵活性增强了生产级 CDC 能力。
🧩 pg_ash v1 — PostgreSQL 活跃会话历史工具

pg_ash v1 为 PostgreSQL 引入了 Active Session History 功能,通过 pg_cron 每秒采样 pg_stat_activity。这个纯 SQL/PL/pgSQL 解决方案无需 C 扩展、shared_preload_libraries 修改或重启,兼容 RDS、Cloud SQL 等托管 PostgreSQL 服务。工具将编码快照存储在分区表中,每个样本约占 100-200 字节,每日存储约 30 MiB,支持自动分区轮转。提供 32 个 SQL 函数进行全面的等待事件分析,包括识别顶级等待、按查询的等待分析、深入钻取和时间线可视化。函数设计支持链式调用,便于人工操作员和 AI 工具进行迭代式根因分析。兼容 PostgreSQL 14-18 版本。
https://www.postgresql.org/about/news/pg_ash-v1-active-session-history-for-postgresql-3242/
🧩 磁盘绑定数据的性能悬崖应对策略

数据库性能遵循可预测的模式:数据能够完全放入内存时响应迅速,但当"工作集"(经常访问的数据)超过可用RAM时性能会突然恶化。这种性能悬崖会让查询响应时间从毫秒级跳跃到数百毫秒级。问题源于缓存淘汰机制 - 新数据会迫使旧数据写入磁盘,后续查询这些被淘汰数据时必须等待缓慢的磁盘I/O。当分析查询扫描历史数据并将近期"热"数据从内存中挤出时,缓存污染会进一步恶化这个问题。解决方案包括垂直扩展(增加RAM)、水平分片,或切换到列式存储以减少数据占用空间。可以通过PostgreSQL的pg_statio_user_tables监控缓存命中率;低于95%的命中率表明即将出现性能问题。
https://www.tigerdata.com/blog/surviving-performance-cliff-disk-bound-data
📨 PostgreSQL Hacker 电子邮件讨论精选
🧩 REPACK [CONCURRENTLY] 的用法探讨
讨论重点是完善 REPACK CONCURRENTLY 功能的实现。Antonin Houska 提交了 v48-0006,这是一个替代实现,允许每个数据库运行一个 REPACK 后端,而不是每个集群一个。Alvaro Herrera 整合了这个改动并发布了 v50,解决了几个问题:通过将 XLogGetInsertRecPtr() 替换为 XLogGetInsertEndRecPtr() 修复了 WAL 刷新请求问题,通过在临时索引上创建约束副本解决了排斥约束问题,并添加了默认值为 5 的 max_repack_replication_slots GUC。Alvaro 建议用 CreateInitDecodingContext() 中的三值参数替换全局变量 accessSharedCatalogsInDecoding,以改进 API 设计。随后发布的 v51 修复了 Windows CI 失败问题,并包含了其他改进,包括 Srinath 的 PreventInTransactionBlock 修复和增强的槽需求错误消息。文档构建失败随后也得到了解决。
https://www.postgresql.org/message-id/90475.1775218118@localhost
🧩 pg_waldump: 支持对 tarfile 中的 WAL 进行解码
该讨论涉及在提交 ebba64c08d9 后 pg_waldump 回归测试失败的问题,该提交添加了 tar 格式验证。主要问题是不同的 tar 实现(GNU tar、BSD tar、OpenBSD tar)使用不同的默认格式——有些默认使用 pax 格式(pg_waldump 无法处理),而其他使用 ustar 格式。
Sami Imseih 报告了由于 ustar 格式中 UID/GID 限制(最大值 2^21-1 或 2097151)导致的测试失败,因为他们系统的 UID 超出了此限制。提议的解决方案是添加 --owner=0 --group=0 标志,在测试 tar 文件中强制使用兼容的所有权值。
Thomas Munro 开发了改进 tar 可移植性的补丁,通过在不同 tar 实现中标准化使用 --format=ustar 来解决问题,包括处理 OpenBSD 最近将默认格式改为 pax 的变更。补丁还使用 File::Spec->devnull() 解决了 Windows 兼容性问题。
Tom Lane 指出,要正确支持 pax 格式需要实现稀疏文件处理,因为当文件页面缺失时 WAL 验证会失败。他对在没有完整稀疏文件解码能力的情况下部分支持 pax 格式表示怀疑。
当前的共识是在测试中强制使用 ustar 格式并覆盖所有权设置,而长期解决方案可能包括在未来开发周期中全面支持 pax/稀疏文件。
🧩 PATCH: jsonpath 字符串方法扩展:lower、upper、initcap、l/r/btrim、replace、split_part
Andrew Dunstan已提交了jsonpath字符串方法补丁。提交后,Marcos Pegoraro发现文档中btrim()函数示例存在他认为的错误。该示例显示jsonb_path_query('"xyxtrimyyx"', '$.btrim("xyz")'),Marcos认为应该改为"xyztrimxyz"。然而Andrew澄清原示例是正确的,演示了btrim()会移除参数字符串中任意字符的前导和尾随序列,而不是精确匹配整个字符串。Marcos通过查阅回归测试确认了这一理解,承认btrim()像标准字符串trim函数一样逐字符工作,并为引起混乱道歉。
https://www.postgresql.org/message-id/40bd5c82-639d-41cd-ad85-9cd2dffd0680@dunslane.net
🧩 如何在运行中的集群里修改数据校验和的状态
Daniel Gustafsson 提交了一个重新基于最新代码的补丁,用于在运行中的集群内改变数据校验和状态,包含 PG_CONTROL_VERSION 版本号提升,已准备提交。Heikki Linnakangas 提供了详细反馈,涉及启动器退出过程中的竞态条件、命名不一致问题(worker_running vs worker_pid)、函数命名清晰度(DataChecksumsInProgress vs DataChecksumsInProgressOn),以及控制文件兼容性的枚举值分配。Daniel 逐一解决了这些问题:在 launcher_exit 中实现适当的锁机制防止竞态、重命名变量提高清晰度、修复头文件依赖关系、添加显式枚举值。经过多次 CI 运行和 CFBot 重新基于代码后,Daniel 推送了这些更改,但遇到构建机器人失败,原因是测试没有等待启动器退出。随后他推送了提交 0036232ba8f 来解决测试时序问题,并继续监控构建农场以发现其他潜在问题。
https://www.postgresql.org/message-id/F2EA770C-275F-41B3-A6F8-9AB12FE12BFD@yesql.se
🧩 PATCH: jsonpath 字符串方法扩展:lower、upper、initcap、l/r/btrim、replace、split_part
Andrew Dunstan已提交了jsonpath字符串方法补丁。提交后,Marcos Pegoraro发现文档中btrim()函数示例存在他认为的错误。该示例显示jsonb_path_query('"xyxtrimyyx"', '$.btrim("xyz")'),Marcos认为应该改为"xyztrimxyz"。然而Andrew澄清原示例是正确的,演示了btrim()会移除参数字符串中任意字符的前导和尾随序列,而不是精确匹配整个字符串。Marcos通过查阅回归测试确认了这一理解,承认btrim()像标准字符串trim函数一样逐字符工作,并为引起混乱道歉。
https://www.postgresql.org/message-id/40bd5c82-639d-41cd-ad85-9cd2dffd0680@dunslane.net
🧩 索引预读机制
Peter Geoghegan 发布了 index prefetching 补丁的第 21 版,在 v20 确立的设计基础上进一步推进。该补丁重新调整了 table AM 和 index AM 代码之间的关系,确保 indexam.c 不再直接调用 indexbatch.c,从而提高灵活性。在 v21 中,indexbatch.c 包含约 80% 的 table AM 代码和 20% 的 index AM 代码,table AM 完全拥有并初始化 batchringbuf。补丁从 index AM API 中移除了 2 个回调函数,但在 table AM API 中添加了 2 个类似的回调。新增了一个用于标记的 table AM 回调,table AM 的 index_fetch_begin 回调现在负责设置 IndexScanDescData.xs_getnext_slot。这样就不再需要 4 个额外的 TableAmRoutine 回调,允许 table AM 根据扫描特性提供所需数量的回调函数。
🗞️ 行业新闻
🧩 Anthropic 斥资 4 亿美元收购生物科技公司 Coefficient Bio

据 The Information 和 Eric Newcomer 报道,Anthropic 以 4 亿美元股票交易收购了处于隐身模式的生物技术 AI 初创公司 Coefficient Bio。此次收购标志着 Anthropic 在核心 AI 助手业务之外向生物技术领域的重大战略扩张。由于 Coefficient Bio 处于隐身状态,其具体技术和运营细节仍然有限,但这笔交易代表了 Anthropic 迄今为止最大的举措之一。这项全股票交易表明 Anthropic 对将 AI 能力应用于生物研究和药物发现充满信心,可能使该公司与其他投资生命科学应用的科技巨头在快速增长的 AI 驱动生物技术领域展开竞争。
🧩 Anthropic 成立新政治行动委员会,加大政治游说力度

Anthropic 在即将到来的中期选举前加强政治参与,推出了新的政治行动委员会(PAC)。这家以 Claude AI 助手闻名的 AI 公司计划通过 PAC 支持与其 AI 监管和治理政策议程一致的候选人。此举标志着 Anthropic 政治参与战略的重大进展,反映出政策影响力对主要 AI 公司日益重要。当前华盛顿对 AI 监管仍存在激烈争议,涉及安全标准、责任框架和创新政策等议题。通过建立 PAC,Anthropic 加入其他科技公司行列,直接参与政治进程以影响 AI 行业相关立法。
https://techcrunch.com/2026/04/03/anthropic-ramps-up-its-political-activities-with-a-new-pac/
🧩 Moonbounce 融资1200万美元,打造AI时代内容审核方案

由 Facebook 前内部人员创立的 Moonbounce 筹集了 1200 万美元,用于开发其 AI 控制引擎,该引擎可将内容审核政策转化为一致且可预测的 AI 行为。这家初创公司解决了 AI 行业的关键挑战:确保 AI 系统可靠且大规模地遵守内容审核准则。Moonbounce 的平台旨在将复杂的审核政策转换为 AI 模型可以一致遵循的可操作控制措施,减少不可预测的输出和政策违规。这种方法帮助部署 AI 应用的公司维护品牌安全、法律合规性和用户信任。随着生成式 AI 日益融入面向消费者的产品和服务,对强大 AI 治理解决方案的需求不断增长,这笔资金将支持 Moonbounce 技术和团队的扩张。
https://techcrunch.com/2026/04/03/moonbounce-fundraise-content-moderation-for-the-ai-era/
🌐 社交媒体动态
🧩 CYBERTEC成为2026德国PostgreSQL大会白金赞助商

CYBERTEC宣布成为2026年德国PostgreSQL大会(PGConf.de)的白金赞助商。该公司将派遣完整团队参会,准备了技术演讲并积极参与活动。大会将于2026年4月21-22日在德国埃森的技术之家举办。CYBERTEC首席执行官汉斯-于尔根·舍尼希接受了大会组织方的采访,相关内容现已可供观看。
🧩 现代商业智能系统并非为人工智能而设计
现代商业智能系统在与人工智能集成时面临挑战,主要问题包括工具分散、逻辑重复以及指标不一致,这些都降低了分析结果的可信度。解决方案是将数据、语义、仪表板和人工智能统一在单一的治理基础之上。现代分析平台可以通过简化分析架构、提高不同工具间的指标一致性、加速实时洞察以及让团队能够用自然语言提问并获得分析答案来解决这些问题。
🔥 HOW 2026 报名进行中
一场真正以技术为核心的 PostgreSQL 大会
HOW 2026 PostgreSQL & IvorySQL 技术峰会火热报名中
📍 2026 年 4 月 27 日 - 28 日|济南


浙公网安备 33010602011771号