mongo 性能調優學習筆記

數據集大小有2億多。json

一. 因爲查詢條件有兩個,建了兩個單獨的索引,但仍是很慢,因而查了不少資料。獲得如下優化方法。僅供參考。優化

    1.創建聯合索引,將兩個用到的查詢字段創建成聯合索引。url

    2.開啓慢查詢分析。db.setProfilingLevel(levelNum)code

  • 0 - 不開啓。
  • 1 - 記錄慢命令 (默認爲>100ms)
  • 2 - 記錄全部命令

    3. 看執行計劃索引

db.getCollection('b2b11467_url').find({"st" : { $ne: 5 },"isCompany":1}).limit(1).explain('executionStats')

db.getCollection('b2b11467_url').find({"st" : { $ne: 5 },"isCompany":1}).limit(1).explain() //看winningPlan 就能夠看到用了哪一個索引。 


"winningPlan" : {
            "stage" : "LIMIT",
            "limitAmount" : 1,
            "inputStage" : {
                "stage" : "FETCH",
                "inputStage" : {
                    "stage" : "IXSCAN",
                    "keyPattern" : {
                        "st" : 1,
                        "isCompany" : 1
                    },
                    "indexName" : "st_isCompany", //索引名稱,這裏是個組合索引
                    "isMultiKey" : false,
                    "isUnique" : false,
                    "isSparse" : false,
                    "isPartial" : false,
                    "indexVersion" : 1,
                    "direction" : "forward",
                    "indexBounds" : {  //索引詳細信息
                        "st" : [ 
                            "[MinKey, 5.0)", 
                            "(5.0, MaxKey]"
                        ],
                        "isCompany" : [ 
                            "[1.0, 1.0]"
                        ]
                    }
                }
            }
        }

        

     結論: 若是是兩個單獨的索引,即便用到了兩個查詢條件都有索引,他最後只會命中一個,創建聯合索引速度快不少。 由2s   ->   100+ ms ,發生了質的突破get

 

2、查看當前執行的語句     input

1.首先登錄到系統管理員帳戶
use admin
db.auth('xxx','xxxxx')

2.執行命令  
db.currentOp()
相關文章
相關標籤/搜索