1. 程式人生 > >mongodb建立索引及索引優化效率案例

mongodb建立索引及索引優化效率案例

  • 查詢監控結果 監控結果儲存在一個特殊的蓋子集合system.profile裡,這個集合分配了128kb的空間,要確保監控分 析資料不會消耗太多的系統性資源;蓋子集合維護了自然的插入順序,可以使用KaTeX parse error: Expected '}', got 'EOF' at end of input: ….find().sort({'natural’:-1}).limit(5) 第二步:分析慢速查詢 找出慢速查詢的原因比較棘手,原因可能有多個:應用程式設計不合理、不正確的資料模型、硬體配置問 題,缺少索引等;接下來對於缺少索引的情況進行分析: 使用explain分析慢速查詢 例如:db.orders.find({‘price’:{’$lt’:2000}}).explain(‘executionStats’) explain的入參可選值為: “queryPlanner” 是預設值,表示僅僅展示執行計劃資訊; "executionStats"表示展示執行計劃資訊同時展示被選中的執行計劃的執行情況資訊; "allPlansExecution"表示展示執行計劃資訊,並展示被選中的執行計劃的執行情況資訊,還展示備選的執行計劃的執行情況資訊 第三步:解讀explain結果 queryPlanner(執行計劃描述) winningPlan(被選中的執行計劃) stage(可選項:COLLSCAN 沒有走索引;IXSCAN使用了索引) rejectedPlans(候選的執行計劃) executionStats(執行情況描述)
    nReturned (返回的文件個數) executionTimeMillis(執行時間ms) totalKeysExamined (檢查的索引鍵值個數) totalDocsExamined (檢查的文件個數) 優化目標 Tips: 1. 根據需求建立索引 2. 每個查詢都要使用索引以提高查詢效率, winningPlan. stage 必須為IXSCAN ; 3. 追求totalDocsExamined = nReturned 測試案例: