यह अध्याय MongoDB क्वेरी प्रदर्शन विश्लेषण का परिचय प्रस्तुत करता है, SQL के explain के समान, MongoDB भी क्वेरी वाक्यों के प्रदर्शन का विश्लेषण करने के लिए समर्थन प्रदान करता है।

मूल उपयोग

explain फ़ंक्शन को बुलाकर, आप विश्लेषण परिणाम प्राप्त कर सकते हैं

// find विधि का विश्लेषण परिणाम
db.collection.find({}).explain();

// aggregate विधि का विश्लेषण परिणाम
db.collection.explain().aggregate([]);

explain के तीन मोड हैं:

  • queryPlanner (डिफ़ॉल्ट)
  • executionStats
  • allPlansExecution

स्पष्टीकरण:

  • queryPlanner का उपयोग करके केवल सभी संभावित क्रियान्वयन योजनाएँ सूचीबद्ध की जाती है, वास्तविक वाक्य नहीं क्रियान्वयन करता है, और जीतने वाली योजना योजना को प्रदर्शित करता है जो पहले से जीत चुकी है।
  • executionStats का उपयोग केवल जीतने वाली योजना को क्रियान्वयन करता है और परिणाम प्रदर्शित करता है।
  • allPlansExecution का उपयोग सभी योजनाओं को क्रियान्वयन करता है और परिणाम प्रदर्शित करता है।

विभिन्न मोड का उपयोग

// executionStats मोड, बस विवरणों को explain फ़ंक्शन में पैरामीटर के रूप में पास करें
db.collection.find({}).explain('executionStats');

// allPlansExecution मोड
db.collection.find({}).explain('allPlansExecution');

explain सामग्री का स्पष्टीकरण

queryPlanner सामग्री

निम्नलिखित सामग्री explain द्वारा डिफ़ॉल्ट सामग्री है, गैर-मुख्य जानकारी को अनदेखा करते हुए

{
	"queryPlanner" : {
		"plannerVersion" : 1,
		"namespace" : "test.orders",
		"indexFilterSet" : false, // मुख्य मापदंड, क्या इंडेक्स डेटा का उपयोग किया जाता है
		"winningPlan" : {
			"stage" : "COLLSCAN",  // मुख्य मापदंड, स्टेज चरण नाम। प्रत्येक चरण में चरण-विशिष्ट जानकारी होती है, जैसे COLLSCAN पूरे संग्रह सामग्री की स्कैनिंग को प्रतिनिधित्व करता है
			"direction" : "forward"
		},
		"rejectedPlans" : [ ]
	}
	...
}

चरण चरण प्रकार निम्नलिखित हैं:

  • COLLSCAN: पूर्ण सारणी स्कैन
  • IXSCAN: इंडेक्स स्कैन
  • FETCH: इंडेक्स पर आधारित विशिष्ट दस्तावेज़ पुनः प्राप्त करें
  • SHARD_MERGE: प्रत्येक शार्ड द्वारा वापसी डाटा को मिलाना
  • सॉर्ट: मेमोरी में क्रमबद्धीकरण दर्शाता है
  • सीमा: वापसी की संख्या पर सीमित करें
  • छोड़ें: इस्तेमाल करने के लिए छोड़ें
  • IDHACK: _id के लिए क्वेरी
  • SHARDING_FILTER: मोंगो द्वारा शार्डेड डेटा क्वेरी
  • COUNT: डेटाबेस का उपयोग करके गणना कार्रवाई करें db.coll.explain().count() या समान
  • COUNTSCAN: शीर्षक नहीं कुंजी का उपयोग करते हुए गणना के लिए स्टेज वापसी
  • COUNT_SCAN: चरण वापसी जब गणना के लिए कुंजी का प्रयोग किया जा रहा है
  • SUBPLA: $or क्वेरियों के लिए वर्षाक प्रयोग नहीं कर रहा है चरण वापसी
  • पाठ: पूर्ण-पाठ इंडेक्स का उपयोग करके क्वेरी करते समय चरण वापसी
  • परियोजना: सीमित वापसी फ़ील्ड के लिए वापसी चरण

executionStats सामग्री

निम्नलिखित सामग्री executionStats मोड में प्राप्त होने वाली सामग्री होती है, गैर-मुख्य जानकारी को अनदेखा करते हुए

{
	"executionStats" : {
		"executionSuccess" : true,
		"nReturned" : 5,  // पुनः प्राप्त दस्तावेज़ों की संख्या
		"executionTimeMillis" : 0, // क्रियान्वयन समय
		"totalKeysExamined" : 0, // कितने इंडेक्स स्कैन किए गए हैं
		"totalDocsExamined" : 5, // सर्वश्रेष्ठ गए दस्तावेज़ों की कुल संख्या
		"executionStages" : {
			"stage" : "COLLS CAN", // चरण प्रकार, COLLSCAN कहता है कि पूरे तालिका को स्कैन किया जाता है
			"nReturned" : 5,
			"executionTimeMillisEstimate" : 0,
			"works" : 7,
			"advanced" : 5,
			"needTime" : 1,
			"needYield" : 0,
			"saveState" : 0,
			"restoreState" : 0,
			"isEOF" : 1,
			"direction" : "forward",
			"docsExamined" : 5
		}
	}
}

क्वेरी अनुकूलन विचार

  • संभवतः जितने संभव हो, इंडेक्स का उपयोग करें
  • जितने कम दस्तावेज़ स्कैन किये जाते हैं, वह बेहतर है