Building Indexes
两种方式:
- forground indexes: 建立时候会 block user input,导致这段时间 DB 不可用。这在产品中不可接受。
- background indexes: 后台建立 index,不会 block operation,代价是build 的时间更长。
导入数据
1 | mongoimport -d m201 -c restaurants --drop restaurants.json |
1 | mac@macs-MacBook ~/Desktop mongoimport -d m201 -c restaurants --drop restaurants.json |
Build background index
默认建立的 index 都是 forground 的,所以为了不 block operation,这里使用 mongo shell 创建 index:
1 | db.restaurants.createIndex({"cuisine":1,"name":1,"address.zipcode":1},{"background":true}) |
这个建立过程虽然不会 block db operation,但是会 block 当前的 mongo shell。我们可以打开另一个 mongo shell 使用 db.currentOp()
去查看当前状态。
1 | "opid" : 2381, |
可以看到当前状态是 db 正在 background 的方式建立 index,进行了 28%。
记住 opid,我们可以使用 db.killOp(opid)
命令来 kill operation before it finish。
index 建立结束以后的状态如下:
1 | db.restaurants.createIndex({"cuisine":1,"name":1,"address.zipcode":1},{"background":true}) |