根据MongooseJS
和MongoDB
/Node.js
的Mongoose documentation:
当您的应用程序启动时,
会自动为您的模式中定义的每个索引调用
ensureIndex
。虽然适合于开发,但建议在生产中禁用此行为,因为创建索引可能会导致显著的性能影响。通过将模式的autoIndex
选项设置为false来禁用该行为。
这似乎指示在部署之前从mongoose中删除自动索引,以优化Mongoose,而不是在应用程序启动时指示Mongo去搅动所有索引,这似乎是有意义的。
在生产代码中处理索引的正确方法是什么?也许外部脚本应该生成索引?或者,如果单个应用程序是集合的唯一读取器/写入器,则ensureIndex
可能是不必要的,因为它将在每次发生数据库写入时继续索引?
编辑:作为补充,MongoDB为如何建立索引提供了良好的documentation,但没有说明为什么或何时应该执行显式索引指令。在我看来,索引应该由编写器应用程序在具有现有索引的集合上自动保持最新,并且ensureIndex
实际上更多是一次性的事情(在应用新索引时完成),在这种情况下,Mongoose的autoIndex
在正常的服务器重启下应该是无操作的。
https://stackoverflow.com/questions/14342708
复制相似问题