关于mongoose autoIndex的疑惑

mongoose上的官方文档说autoIndex这个属性为true时,当应用启动的时候, mongoose会自动为你的schema调用ensureIndex确保生成索引. 开发环境用这个很好, 但是建议在生产环境不要使用这个.那样的话要怎么建索引,难道要手动的用mongo shell一个一个的建索引吗?

阅读 4k
1 个回答

创建索引本来就是一次性的工作,在mongo shell里面手动创建是最好的选择,为什么要说“难道”呢?
这不仅是会执行多少次的问题,还有什么时间执行,以及是否影响到生产环境的问题。要理解索引过程对于数据库是一个很大的消耗,前台索引会锁住整个集合上的所有CRUD操作,后台索引虽然没有直接上锁,但仍然需要消耗大量CPU和IO来读取文档和修改索引。无论哪种都有可能消耗大量的时间和资源(比如在一个比较大的集合上新建一个索引)。mongoose不建议在生产环境使用的原因也在这里。
生产环境要求的是稳定,方便只是其次。在影响到“稳定”的时候让步的必然是“方便”。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题