1、问题描述
执行以下语句时,导致其他对MongoDB的请求无法被相应,线上应用程序报错。
db.getCollection('***').ensureIndex({key:1})
2、原因分析
MongoDB建索引时,默认前台操作,原因是为了尽可能快的创建索引,在此过程中会阻塞其他对数据库的IO操作。可以通过设置background=true使其后台运行,单独起一个线程执行相关操作。
3、解决方案
执行一下语句,后台建立索引。
db.getCollection('***').ensureIndex({key:1},{background: true})
4、其他
- 查看已经添加的索引
db.getCollection('***').getIndexes()