共計 1746 個字符,預計需要花費 5 分鐘才能閱讀完成。
本篇內容介紹了“怎么理解 mongodb 執行計劃”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
====Mongodb 并發批量 kill session =============
并發、批量 kill session
1、將查詢時間超過 1000s 的所有 session kill 掉
db.currentOp().inprog.forEach(function(item){if(item.secs_running 1000 item.op == query)db.killOp(item.opid)})
2、將所有包含集合 jack.bear 查詢 kill 掉
db.currentOp().inprog.forEach(function(item){if(item.ns == jack.bear item.op == query)db.killOp(item.opid)})
3、將滿足 item.op== query item.secs_running 60 item.ns== jack.bear 這 3 個條件的操作 kill 掉
db.currentOp().inprog.forEach(function(item){if(item.waitingForLock){var lock_info = item[ opid if(item.op== query item.secs_running 60 item.ns== cswuyg.cswuyg){db.killOp(item.opid)}}})
4、將滿足 item.op == query item.secs_running 1000 這 2 個條件的操作 kill 掉
db.currentOp().inprog.forEach(function(item) {
var lock_info = item[opid
if (item.op == query item.secs_running 1000) {
print(kill , item.opid);
db.killOp(item.opid)
}
})
################# MongoDB 執行計劃 ################
Stage 分類
COLLSCAN:掃描整個集合 IXSCAN:索引掃描 FETCH:根據索引去檢索選擇 document
SHARD_MERGE:將各個分片返回數據進行 merge
SORT:表明在內存中進行了排序(與老版本的 scanAndOrder:true 一致)
LIMIT:使用 limit 限制返回數
SKIP:使用 skip 進行跳過 IDHACK:針對_id 進行查
SHARDING_FILTER:通過 mongos 對分片數據進行查詢
COUNT:利用 db.coll.explain().count() 之類進行 count
COUNTSCAN:count 不使用用 Index 進行 count 時的 stage 返回
COUNT_SCAN:count 使用了 Index 進行 count 時的 stage 返回 SUBPLA:未使用到索引的 $or 查詢的 stage 返回
TEXT:使用全文索引進行查詢時候的 stage 返回 PROJECTION:限定返回字段時候 stage 的返回
========= 重建索引 =======
重建索引:
db.tableName.dropIndex(indexName)
db.tableName.ensureIndex({key1 : 1 , key2 :1},{name : indexName},{background:true})
db.COLLECTION_NAME.ensureIndex({uuid :-1},{background:true})
db.COLLECTION_NAME.getIndexes()
== 查看執行計劃 ===
db.collection_name.find({}).explain(true)
find{} 里面要設置具體的查詢條件,才可以查到精確的執行計劃
MongoDB 查看執行計劃時,最理想狀態:–20180604
“怎么理解 mongodb 執行計劃”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!