添加索引豁免是否会删除已存在的单字段索引并释放存储空间?
结论
新增字段索引豁免的操作不会自动删除已生成的该字段对应单字段索引,也不会自动释放对应的存储空间。
具体说明
- 索引豁免规则的作用范围仅限新增写入的文档以及后续新触发的索引构建操作,没有追溯效力,仅会修改集合/索引的元数据配置,不会主动清理已生成的索引数据。已存在的该字段单字段索引会完整保留,仍然可以被查询优化器正常调用。
- 如果你需要清理已有索引释放存储空间,需要手动执行对应操作:以MongoDB为例,执行
db.集合名.dropIndex("嵌套字段完整路径")即可删除指定单字段索引;如果是Elasticsearch等搜索引擎类数据库,需要先在Mapping中移除该字段的索引配置,再手动触发段合并操作才能真正释放磁盘空间。 - 数亿级文档对应的超大嵌套字段索引体量通常可达数十GB甚至更高,手动删除索引的操作会占用较多磁盘IO和CPU资源,建议在业务低峰期执行,避免影响正常业务读写。
- 如果你后续有全量重建索引的计划,重建过程中新的索引豁免规则会生效,该字段不会被纳入新构建的索引中,无需额外处理。
内容的提问来源于stack exchange,提问作者Daniel Ferreira Jorge
相关产品推荐
相关产品推荐

