首页 > 解决方案 > 动态创建索引是否正常?

问题描述

使用 ensureIndex 在 MongoDB 中动态创建索引是一种正常做法吗?

或者我需要提前创建索引,然后每次请求db时不要调用ensureIndex?

标签: node.jsmongodb

解决方案


EnsureIndex 已弃用(请参阅文档)。创建索引的计算成本很高,并且会在过程完成时阻塞数据库活动。您可以在后台运行构建,但负载可能仍会影响系统性能。一个副本集,您可以单独删除每个集群成员并以独立模式构建索引,以确保索引构建不会影响整体集群性能。

因此,离线构建一次索引并记住索引不是免费的,并且会强制执行写入扇出,因为在插入或更新时每个索引都需要额外的写入操作。


推荐阅读