mongoose上的官方文档说autoIndex这个属性为true时,当应用启动的时候, mongoose会自动为你的schema调用ensureIndex确保生成索引. 开发环境用这个很好, 但是建议在生产环境不要使用这个.那样的话要怎么建索引,难道要手动的用mongo shell一个一个的建索引吗?
mongoose上的官方文档说autoIndex这个属性为true时,当应用启动的时候, mongoose会自动为你的schema调用ensureIndex确保生成索引. 开发环境用这个很好, 但是建议在生产环境不要使用这个.那样的话要怎么建索引,难道要手动的用mongo shell一个一个的建索引吗?
3 回答2.5k 阅读✓ 已解决
5 回答2.5k 阅读
1 回答822 阅读✓ 已解决
2 回答1.1k 阅读
2 回答1.5k 阅读
2 回答487 阅读✓ 已解决
1 回答588 阅读✓ 已解决
创建索引本来就是一次性的工作,在mongo shell里面手动创建是最好的选择,为什么要说“难道”呢?
这不仅是会执行多少次的问题,还有什么时间执行,以及是否影响到生产环境的问题。要理解索引过程对于数据库是一个很大的消耗,前台索引会锁住整个集合上的所有CRUD操作,后台索引虽然没有直接上锁,但仍然需要消耗大量CPU和IO来读取文档和修改索引。无论哪种都有可能消耗大量的时间和资源(比如在一个比较大的集合上新建一个索引)。mongoose不建议在生产环境使用的原因也在这里。
生产环境要求的是稳定,方便只是其次。在影响到“稳定”的时候让步的必然是“方便”。