MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB अलग-अलग क्वेरी प्लान अलग-अलग nReturned मान क्यों दिखाते हैं?

इसे allPlansExecution Mode प्रलेखन पृष्ठ। व्याख्या करने के लिए:

योजना चयन के दौरान, यदि एक से अधिक सूचकांक हैं जो एक प्रश्न को संतुष्ट कर सकते हैं, तो MongoDB सभी वैध योजनाओं का उपयोग करके यह निर्धारित करने के लिए एक परीक्षण चलाएगा कि कौन सा प्रदर्शन सबसे अच्छा है। देखें क्वेरी प्लान इस प्रक्रिया के बारे में विवरण के लिए।

MongoDB 3.4.6 के अनुसार, योजना चयन में "दौड़" में समानांतर में उम्मीदवार योजनाएं चलाना शामिल है, और देखें कि कौन सी उम्मीदवार योजना पहले 101 परिणाम लौटाती है। ऊपर दिए गए आपके उदाहरण में, जब तक जीतने वाली योजना ने दौड़ में 101 परिणाम लौटाए, तब तक हारने वाली योजना केवल 2 परिणामों का प्रबंधन करती थी। जीतने की योजना तब पूरी होने के लिए क्रियान्वित हो जाती है। यही कारण है कि हारने की योजना केवल nReturned: 2 . दिखाती है आँकड़ों में।

यह "दौड़" तब से की जाती है जब दो समान दिखने वाली योजनाएँ होती हैं, MongoDB को यह नहीं पता होता है कि JSON दस्तावेज़ों के लचीलेपन के कारण कौन सी योजना किसी विशेष क्वेरी के लिए सबसे अच्छी है (जैसे SQL के विपरीत जहाँ तालिकाओं की संरचना ज्ञात है) . बेशक, यह पूरी तरह से संभव है कि MongoDB गलत अनुमान लगाता है, और एक कम निष्पादक योजना के साथ समाप्त होता है, क्योंकि यह एक अनुभवजन्य प्रक्रिया है। इस कारण से, आपके प्रश्नों का समर्थन करने वाली अनुक्रमणिका बनाना सबसे अच्छा है ताकि MongoDB को अनुमान लगाने की आवश्यकता न हो। अन्यथा, आप hint() . का उपयोग कर सकते हैं MongoDB को यह बताने के लिए कि किसी निश्चित क्वेरी के लिए किस इंडेक्स का उपयोग करना है।

इसलिए:

  • विजेता योजना के आंकड़े वास्तविक क्वेरी के परिणाम आंकड़े हैं।
  • खोने की योजना(यों) के आंकड़े केवल क्वेरी प्लानिंग ट्रायल रन के आंकड़े दिखाते हैं।
  • योजना चयन में 101 परिणामों के लिए "दौड़" चलाना शामिल है। यह दौड़ केवल तभी की जाती है जब कई अनुक्रमणिकाएं होती हैं जो क्वेरी को संतुष्ट कर सकती हैं।

नोट 1 :आपके द्वारा देखी गई दो योजनाओं में से कोई भी महान नहीं थी। विजेता योजना "nReturned" : 43 . दिखाती है , "totalKeysExamined" : 221 , और "totalDocsExamined" : 219 . इसका मतलब यह है कि MongoDB को उनमें से केवल 43 को वापस करने के लिए 219 दस्तावेज़ों की जांच करने की आवश्यकता है:केवल 20% दक्षता . आदर्श रूप से, आप चाहते हैं कि nReturned totalDocsExamined . के बराबर संख्याएं ।

नोट 2 :कंपाउंड इंडेक्स {'rack_name': 1, 'timestamp': 1} बनाने की कोशिश करें . इसी क्वेरी के साथ, आपको एक बेहतर दक्षता संख्या मिलनी चाहिए।

नोट 3 :ध्यान दें कि allPlansExecution . के बाद से निर्दिष्ट किया गया था, सभी MongoDB द्वारा आपको आंकड़े पूरी तरह से वापस कर दिए जाते हैं, जबकि इसका अंतिम nReturned से कोई लेना-देना नहीं है। नतीजा। यह एक अस्वीकृत योजना थी, और nReturned: 2 संख्या कर सकते हैं भ्रमित होना। यदि आप executionStats . का उपयोग करते हैं तो आपको यह आंकड़े नहीं दिखाई देंगे स्थापना। मुख्य रूप से, allPlansExecution का उपयोग फ़ाइन-ट्यूनिंग और यह निर्धारित करने के लिए किया जाता है कि कुछ योजनाएँ क्यों अस्वीकृत की जाती हैं।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब में सीमित प्रविष्टियां

  2. मोंगोडब को सहेजने का प्रयास करते समय प्रमाणीकरण विफलता

  3. मोंगो ट्रिपल कंपाउंड इंडेक्स

  4. योग के साथ विशिष्ट मोंगो क्वेरी काम नहीं कर रहा है

  5. मोंगोडब का उपयोग करके मोंगोडब में दो दिन शामिल करने के बीच मोंगोडब से डेटा कैसे प्राप्त करें