2012-09-20 16 views
27

मैं एक प्रश्न निकाल दिया और मोंगो कंसोल पर यह समझाने की कोशिश की औरसमझौता मोंगो db समझाने

"isMultiKey" : true, 
"n" : 8, 
"nscannedObjects" : 17272, 
"nscanned" : 17272, 
"nscannedObjectsAllPlans" : 21836, 
"nscannedAllPlans" : 21836, 
"scanAndOrder" : true, 
"indexOnly" : false, 
"nYields" : 0, 
"nChunkSkips" : 0, 
"millis" : 184, 

चीजों में से अधिकांश http://www.mongodb.org/display/DOCS/Explain से वर्णन किया गया है, लेकिन मैं नहीं समझ सकता क्या nscannedObjectsAllPlans करता है, nscannedAllPlans का मतलब है। क्या कोई मदद कर सकता है?

धन्यवाद

उत्तर

23

nscanned और जीतने के लिए योजना nscannedObjects रिपोर्ट का परिणाम है। सभी योजनाओं

उदाहरण के लिए के लिए

nscannedAllPlans और nscannedObjectsAllPlans रिपोर्ट परिणाम:

>t = db.jstests_explainb; 
>t.drop(); 

>t.ensureIndex({ a:1, b:1 }); 
>t.ensureIndex({ b:1, a:1 }); 

>t.save({ a:0, b:1 }); 
>t.save({ a:1, b:0 }); 

>t.find({ a:{ $gte:0 }, b:{ $gte:0 } }).explain(true); 
{ 
    "cursor": "BtreeCursor a_1_b_1", 
    "isMultiKey": false, 
    "n": 2, 
    "nscannedObjects": 2, 
    "nscanned": 2, 
    "nscannedObjectsAllPlans": 6, 
    "nscannedAllPlans": 6, 
    "scanAndOrder": false, 
    "indexOnly": false, 
    "nYields": 0, 
    "nChunkSkips": 0, 
    "millis": 2, 
... 
} 
+0

तो मैं चिंता करना चाहिए अगर nscannedObjectsAllPlans, nscannedAllPlans बड़े मूल्य दे रहे हैं, जबकि nscanned स्वीकार्य सीमा में अब भी है? –

+0

मुझे ऐसा नहीं लगता - मेरा मानना ​​है कि यह केवल तभी होता है जब व्याख्या() कहा जाता है कि यह उन अन्य योजनाओं को पहले स्थान पर करता है। – Konklone

+3

कई योजनाएं चलाना मूल रूप से मोंगोडीबी तय करता है कि किस क्वेरी योजना का उपयोग करना चाहिए। यह पहली बार क्वेरी चलाने के समानांतर में उपयोग की जाने वाली सभी योजनाओं को निष्पादित करता है, फिर समय-समय पर कई प्रश्नों या डेटा में परिवर्तन के बाद। जैसे ही कोई खत्म होता है, यह इसे उपयोग करने की योजना के रूप में कैश करता है, दूसरों को रद्द करता है, और अगली बार जब तक इसे रीफ्रेश करने का निर्णय नहीं लेता तब तक उस योजना का उपयोग करेगा। –