PostgreSQL 技术日报|为什么加索引反而变慢?这招让查询快 50 倍17认证网

正规官方授权
更专业・更权威

PostgreSQL 技术日报|为什么加索引反而变慢?这招让查询快 50 倍

⚙️ PostgreSQL技术文章

🧩 移动一个词如何能将查询速度提升 10–50 倍

PostgreSQL性能优化显示,在EXISTS子句中移动”not”可以提供10-50倍的速度提升。两个功能等效的查询在软删除模式上显示出显著的性能差异:Query 1使用EXISTS与活跃帖子(98%数据)的部分索引,而Query 2使用NOT EXISTS与已删除帖子(2%数据)的部分索引。Query 2的性能快32倍,缓冲区读取少29倍。关键见解:”在索引中未找到”完全跳过堆获取,而”找到”在活跃更新的表上需要堆验证。Query 1执行527k次堆获取,而Query 2执行10k次获取。此优化适用于任何布尔少数模式,其中一小部分携带标志。

https://postgres.ai/blog/20260311-not-exists-vs-exists-partial-index

🧩 “AI DBA”的困境

pganalyze的Lukas Fittl认为”AI DBA”概念从根本上误解了AI在数据库管理中的应用方式。他认为将AI框架化为DBA替代品混淆了执行工作与承担结果责任,在生产问题出现时会造成责任空白。Fittl主张不应替换数据库专家,而应使用AI工具来赋能应用工程师和数据平台团队。LLM擅长信息检索、代码交叉引用和弥合团队间的知识差距,但无法为生产决策承担责任。解决方案是让平台团队提供安全、策划好的AI工具,帮助工程师更有效地使用数据库,同时保持对生产结果的明确所有权和责任。

https://pganalyze.com/blog/the-ai-dba-dilemma

🧩 PGCA 非营利赞助等级和网站的更新

PostgreSQL Community Association (PGCA)这一保护PostgreSQL品牌资产的官方非营利组织于2026年2月更新了其赞助级别和网站。PGCA提高了其最高两个赞助等级Benefactor和Patron的标准,于2026年2月1日生效,理由是商标保护成本不断上升。所有其他赞助级别保持不变。该组织还在www.postgres.ca推出了现代化网站,以更好地解释其使命、商标使用指南和捐赠选项。更新的赞助说明书可在赞助商页面查看。这些变化旨在支持PGCA继续保护PostgreSQL商标和品牌资产。

https://www.postgresql.org/about/news/updates-to-pgca-non-profit-sponsorship-levels-website-3254/

🧩 为什么添加更多索引最终会使事情变得更糟

添加更多PostgreSQL索引由于写放大效应不可避免地会降低写性能。每个索引都会对每个INSERT操作产生”固定税收”——拥有5个索引的表每行需要执行6次写操作(1次堆写入+5次索引写入)。在50,000次插入/秒的高摄入率下,这变成300,000次写操作/秒,产生大量I/O开销和WAL膨胀。时间戳索引因”热右边缘”行为遭受额外问题,单调递增的值会导致B-tree最右叶页持续分裂。这会产生反馈循环:索引减慢写入,导致缓冲区压力和查询性能下降,进而添加更多索引。问题随摄入率复合增长——在500次插入/秒时工作正常的索引在50,000次插入/秒时由于线性的每索引成本倍数变得有问题。

https://www.tigerdata.com/blog/why-adding-more-indexes-eventually-makes-things-worse

📨 PostgreSQL Hacker 电子邮件讨论精选

🧩  Buffer locking 很特殊(hints、checksums、AIO writes)

Andres Freund报告已推送缓冲区锁定优化系列中的多个补丁,并提供了剩余更改的更新版本。讨论围绕MarkBufferDirtyHint()操作和heap_inplace_update_and_unlock()功能的改进展开。Noah Misch对v12-0001补丁给出了积极评价,而Heikki Linnakangas建议改进注释。性能测试显示显著收益:在双插槽机器上,流水线pgbench只读工作负载提升7-8%,无流水线时由于上下文切换瓶颈收益较小为1-2%。更极端的工作负载如索引嵌套循环连接显示高达25%的改进。这些优化减少了竞争缓存行上的原子操作,特别有利于内部btree页面。Andres建议类似的优化可以应用于PinBuffer() + LockBuffer()组合,但需要更复杂的实现和新的API。

https://www.postgresql.org/message-id/mheeefrtikvgjnjsenocvo3afj7vlpr5rljkzevssxs77n2zdt@sugqtjhryydo

🧩 修复未初始化的 xl_running_xacts 填充Alexander Kuzmenkov正在处理PostgreSQL WAL记录中未初始化填充的问题,得到了Heikki Linnakangas对全面初始化的支持。Kuzmenkov在整个代码库中发现了42个类似的案例,并创建了一个补丁,使用memset而不是结构初始化(= { 0 })来初始化WAL记录填充,因为后者在某些配置下无法正确初始化填充。该补丁还删除了与WAL相关的Valgrind抑制,在这些更改下回归测试通过了Valgrind检测。然而,Kuzmenkov后来承认进行了一些可能不必要的更改,例如对没有填充的结构的ginxlogInsertListPage的修改,表明需要更仔细地逐个审查每个案例。

https://www.postgresql.org/message-id/CALzhyqzKTRVsQGj+qDDRVs3Oo0EvffuQvVO0v4rbpWU=SoXKug@mail.gmail.com

🧩 消除 xl_heap_visible 以减少 WAL(并最终在访问时设置 VM)Melanie Plageman 推送了额外的介绍性提交,并分享了消除 xl_heap_visible 以减少 WAL 补丁集的 v37 版本。一个重要变化是移除了 get_conflict_xid() 函数,经分析确定这是不必要的,因为在当前代码中不会出现页面全可见但非全冻结的场景。冲突 XID 计算已被简化,处理三种情况:设置 VM 位、冻结页面和修剪操作。补丁在所有已识别场景中正确设置冲突范围为 InvalidTransactionId。一个剩余问题涉及插入操作期间的 pd_prune_xid 行为 – 是否在正常模式和重放模式中都防范为非正常事务 ID 设置它以保持一致性,特别是考虑到 bootstrap 模式对 heap_insert() 的使用。

https://www.postgresql.org/message-id/CAAKRu_Z8Ry_ynNBPAzs_Ry3MQi9NaBgt1ccLgwRsDbxWpocaBg@mail.gmail.com

🧩 在发布中跳过架构更改讨论围绕PostgreSQL发布的新引入的EXCEPT子句展开,该子句允许从ALL TABLES发布中排除特定表。语法CREATE PUBLICATION pub FOR ALL TABLES EXCEPT TABLE (a, b, c)在Amit Kapila审查后最近被推送。Masahiko Sawada对语法不一致性表示担忧,质疑为什么排除列表使用TABLE (a, b, c)格式,而包含列表使用TABLE a, TABLE b, TABLE c格式,以及EXCEPT后的TABLE关键字是否冗余。

Shveta Malik为设计决策辩护,解释选择TABLE关键字和括号是为了未来扩展性,以支持排除其他对象类型如模式或序列,并在复杂的混合包含/排除场景中避免歧义。然而,Sawada仍然担心用户混淆,并建议TABLE (…)语法与现有PostgreSQL用法冲突。他提出了EXCEPT TABLES (t1, t2)或将所有排除项分组在括号中等替代方案。

小的补丁改进继续进行,Nisha Moond对v61版本提供反馈,导致v62版本解决了未使用参数和错误消息一致性问题。

https://www.postgresql.org/message-id/CAJpy0uB20MhJJEaPJdm31t4fykJ+fChA_76jU2P9HX5knbJvAA@mail.gmail.com

🧩 在逻辑复制中确认远程刷新之前退出 walsenderAlexander Korotkov修订了一个补丁,解决了逻辑复制中walsender关闭行为的问题。该补丁引入了新的GUC参数`wal_sender_shutdown_timeout`,允许walsender在确认远程刷新之前退出,默认值为-1(禁用)以保持现有行为。该参数可以按连接设置,影响逻辑和物理WAL发送器。Greg Sabino Mullane提供了详细的审查,发现了几个问题:文档清晰度问题、术语不一致(应使用”Timeout”而非”TimeOut”)、关于关闭信号条件逻辑的疑问、对无条件发送完成消息的担忧,以及要求提供更多信息性错误消息。审查还指出了多个拼写错误(”successfull”应为”successful”,”receival”应为”receipt”),并建议改进测试覆盖率,包括测试正超时值和验证警告消息是否发出。

https://www.postgresql.org/message-id/CAPpHfdupdorG3m_TGSWO5ykXXkMAB1UXA7cB9ktr_sW6yt2vbg@mail.gmail.com

🗞️ 行业新闻

🧩 Google 完成对云网络安全初创公司 Wiz 的 32 亿美元收购

Google正式以320亿美元全现金收购了以色列网络安全公司Wiz,这是Google历史上最大的收购交易。该交易在两家公司首次宣布后整整一年完成。Wiz专门从事云网络安全解决方案,为云基础设施提供安全工具和服务。此次收购显著增强了Google的网络安全能力和云产品,使公司能够在企业安全市场中更好地竞争。320亿美元的价格标签反映了对网络安全公司的高价值评估,因为组织越来越多地将运营迁移到云端并面临日益增长的安全威胁。

https://techcrunch.com/2026/03/11/google-completes-32b-acquisition-of-wiz/?utm_campaign=daily_pm

🧩 Replit在达到30亿美元估值6个月后获得90亿美元估值

在线编程平台Replit通过新一轮4亿美元融资获得90亿美元估值,在短短六个月内从之前的30亿美元估值实现了惊人的三倍增长。该公司提供基于云的开发环境和编程工具,用户群和收入都经历了快速增长。Replit设定了到年底达到10亿美元年度经常性收入(ARR)的雄心勃勃目标。这种戏剧性的估值增长反映了对易于使用的编程平台和开发工具的强劲需求,特别是随着更多个人和组织拥抱编程和软件开发。这笔资金可能将支持Replit的扩张和产品开发工作。

https://techcrunch.com/2026/03/11/replit-snags-9b-valuation-6-months-after-hitting-3b/?utm_campaign=daily_pm

🧩 Rivian spin-out Mind Robotics 融资5亿美元用于工业AI驱动机器人

从电动汽车制造商Rivian分拆出来的初创公司Mind Robotics为其工业AI驱动机器人筹集了5亿美元资金。该公司由Rivian创始人RJ Scaringe创立,专注于为工业应用开发人工智能驱动的机器人解决方案。Mind Robotics计划使用来自Rivian工厂运营的数据训练其AI系统,并在Rivian的制造设施内部署其机器人。这轮大额融资显示了投资者对工业环境中AI驱动自动化潜力的巨大信心。该初创公司与Rivian的联系为其提供了现实世界的测试环境和运营数据,以完善其制造应用的机器人系统。

https://techcrunch.com/2026/03/11/rivian-mind-robotics-series-a-500m-fund-raise-industrial-ai-powered-robots/?utm_campaign=daily_pm

想了解更多行业资讯

扫码关注👇

了解更多考试相关

扫码添加上智启元官方客服微信👇

未经允许不得转载:17认证网 » PostgreSQL 技术日报|为什么加索引反而变慢?这招让查询快 50 倍
分享到:0

评论已关闭。

400-663-6632
咨询老师
咨询老师
咨询老师