標籤:des 使用 os strong io for 2014 cti
1 查看查詢計劃
db.user.find({"username":"xxx"}) .explain()
db.doc.find({"es_y":"2014"}).explain()
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 0,
"nscannedObjects" : 1,
"nscanned" : 1,
"nscannedObjectsAllPlans" : 1,
"nscannedAllPlans" : 1,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"server" : "idc254:27017",
"filterSet" : false
}
--------
indexOnly---表明是否只用索引就可以返回所需的欄位,而不是二次根據地址取文檔!
cursor表明是否用了索引
nscanned是mongodb完成這個查詢掃描的文檔總數。
millis顯示的是這個查詢耗費的毫秒數。
n顯示了查詢結果的數量。
scanAndOrder---表明是否需要在記憶體中排序!
2 建立索引
db.user.ensureIndex({"username":1})
3 查詢某個集合的所有索引
db.doc.getIndexes()
4 查看當前伺服器的操作
db.currentOp()
{
"inprog" : [
{
"opid" : 486,
"active" : true,
"secs_running" : 2,
"op" : "getmore",
"ns" : "local.oplog.rs",
"query" : {
},
"client" : "192.168.56.66:37299",
"desc" : "conn2",
"threadId" : "0x7f1e191d7700",
"connectionId" : 2,
"waitingForLock" : false,
"numYields" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(89),
"w" : NumberLong(0)
},
"timeAcquiringMicros" : {
"r" : NumberLong(15),
"w" : NumberLong(0)
}
}
}
]
}
5 關於索引
對於寫操作時間慢,一個集合最多64個索引,通常不要超過2個以上的索引個數!
6 建立複合索引
db.user.ensureIndex({"key1":1,"key2":1})
7 記憶體排序
如果需要在記憶體中排序,且超過32MB.
就會報錯!
8 強制指定索引進行查詢
.hint({索引。。。})
9覆蓋索引
簡單來說,就是索引的欄位已經可以滿足需求,不需要再二次根據地址取文檔!
10隱式索引
比如說 {"age":1,"username":1}可以當做{"age":1}來使用!