【DB吐槽大会】第62期 - PG 不支持index skip scan

简介: 大家好,这里是DB吐槽大会,第62期 - PG 不支持index skip scan

背景


1、产品的问题点

  • PG 不支持index skip scan

2、问题点背后涉及的技术原理

  • PG 的索引扫描方法仅支持index scan, index only scan, bitmap index scan.
  • index scan 为索引叶子节点链表顺序扫描.
  • index only scan与index scan类似, 只是某些情况下不需要回表.
  • bitmap index scan先汇总ctid的block id, 然后按block id顺序回表再recheck.
  • 以上扫描方法都不支持跳跃式扫描, 例如distinct gid, 即使GID字段有索引, 走索引扫描方法需要扫描整个索引才能得到distinct gid.
  • 并不能拿到1个GID后, 直接回到ROOT节点找大与上一个GID的下一个GID. 因此效率非常低.

3、这个问题将影响哪些行业以及业务场景

  • 稀疏值的统计、去重. 例如在用户的行为日志中, 求某个时间段的活跃用户(count distinct uid)

4、会导致什么问题?

  • 性能较差

5、业务上应该如何避免这个坑

使用递归查询来解决这个问题:

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • SQL难度急剧增加, 一般开发者可能不会写递归SQL.
  • 如果是框架生成的SQL则无法改写. 导致性能差.

7、数据库未来产品迭代如何修复这个坑

  • 希望引入index skip scan的功能, 直接在索引扫描层面解决, 而不是通过使用递归SQL来解决这个性能问题.

PostgreSQL 许愿链接

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
运维 负载均衡 Cloud Native
云原生网关MSE-Higress对比测评
本文将从功能、性能、架构、可扩展性、运维、价格等6个维度简析MSE-Higress与其竞品的差异和优缺点。
2567 1
|
6月前
|
弹性计算 人工智能 安全
2026年OpenClaw(原Clawdbot)一键部署+企业微信接入保姆级教程
2026年OpenClaw(前身为Clawdbot)凭借轻量化部署架构、强大的AI任务自动化执行能力和灵活的生态拓展性,成为企业数字化办公升级的核心工具。阿里云提供的弹性计算资源、成熟的容器化部署环境与企业级安全防护体系,为OpenClaw的稳定运行提供了坚实支撑;而企业微信作为国内主流的企业协同办公平台,与OpenClaw的深度联动,可实现“企业微信发指令、AI自动化落地”的全流程办公提效。本文基于2026年最新实测经验,从阿里云环境搭建、OpenClaw部署、企业微信接入配置到运维优化,提供包含完整代码命令的保姆级教程,零基础用户也能按步骤零失误完成部署与集成。
3031 10
|
6月前
|
人工智能 JavaScript Linux
OpenClaw 原版和汉化版windows 和Linux 下的部署实践
OpenClaw(原Clawdbot/Moltbot)是由彼得·斯坦伯格开发的开源个人AI代理,以“龙虾”为标识,口号“The AI that actually does things”。支持软件操作与长期记忆,2026年获Karpathy公开提及。提供中英文版本,基于TypeScript,可本地部署。
8333 132
|
Cloud Native Serverless 开发者
Bolt.diy 一键部署体验:开启创意建站新旅程
今天我来给大家分享一下我最近折腾的有趣玩意儿——Bolt.diy!这玩意儿可真是个宝藏,简直就是创意建站的超强辅助。
426 17
|
量子技术 Python
探索绝对零度的极限:量子计算机的冷却技术
探索绝对零度的极限:量子计算机的冷却技术
687 9
|
存储
MCS-51单片机的中断源
MCS-51单片机的中断源
1474 1
|
监控 关系型数据库 PostgreSQL
PostgreSQL 12: 新增 pg_stat_progress_create_index 视图监控索引创建进度
PostgreSQL 12 版本之前,对PostgreSQL大表创建索引时是一个比较痛苦的过程,创建索引过程中无法得知索引创建进度,PostgreSQL 12 在运维监控功能方面得到增强,新增 pg_stat_progress_create_index 视图可以监控索引的创建进度,本文简单演示。
3060 0
|
JavaScript 前端开发
vue3 nextTick()应用
在Vue3中,可以使用nextTick函数来延迟执行某些操作,这些操作会在下一次DOM更新周期之后执行。这个函数通常用于在数据更新后,等待DOM更新之后执行一些操作,比如获取DOM元素的尺寸、位置等。
|
机器学习/深度学习 算法 TensorFlow
OpenAI Gym 中级教程——多智能体系统
OpenAI Gym 中级教程——多智能体系统
1382 0
|
数据可视化 数据挖掘 Python
Scipy 中级教程——信号处理
Scipy 中级教程——信号处理【1月更文挑战第8篇】
955 2