作者
digoal
日期
2021-10-09
标签
PostgreSQL , 索引失效 , invalid index
1、产品的问题点
- PG 不支持索引失效(invalid index)功能
2、问题点背后涉及的技术原理
- PG 执行计划会考虑使用索引, 除非这个索引被标记为invalid状态.
- 当数据发生变化时, invalid状态的索引依旧会被更新.
3、这个问题将影响哪些行业以及业务场景
- 通用
4、会导致什么问题?
- 当想临时排除某个索引对某些SQL执行计划的影响时, 只能drop index. 如果DROP后还有其他SQL想用到这个索引又不得不加上, 耗时而且浪费资源.
- 不清楚某个索引是否被用到, 直接DROP的话, 如果索引还要被用到, 再创建索引, 耗时而且浪费资源.
5、业务上应该如何避免这个坑
- 直接修改元数据, 实现invalid索引效果. 《PostgreSQL 改元信息 invalid index》
- 如果只是想清理未使用过的索引, 可以查看 pg_stat_all_indexes、pg_statio_all_indexes 索引统计信息来判断索引是否被使用.
- 《PostgreSQL DBA最常用SQL》
6、业务上避免这个坑牺牲了什么, 会引入什么新的问题
- 改元数据的风险较大
7、数据库未来产品迭代如何修复这个坑
- 建议支持invalid index语法. invalid index 继续保持索引的更新, 随时可以改回valid.
期望 PostgreSQL 增加什么功能?
类似Oracle RAC架构的PostgreSQL已开源: 阿里云PolarDB for PostgreSQL云原生分布式开源数据库!
PostgreSQL 解决方案集合
德哥 / digoal's github - 公益是一辈子的事.

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




