MongoDB में इंडेक्स और explain() के साथ टैग काउंटिंग परफॉरमेंस विश्लेषण
इंडेक्स बनाएं और फिर explain() का उपयोग करें।
इंडेक्स बनाना और कलेक्शन पॉपुलेट करना
> db.demo278.ensureIndex({"Subjects":1});
{ "createdCollectionAutomatically": true, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 }
> db.demo278.insertOne({"Subjects":["MySQL","MongoDB","Java"]});
{ "acknowledged": true, "insertedId": ObjectId("5e49096edd099650a5401a55") }
> db.demo278.insertOne({"Subjects":["C","C++"]});
{ "acknowledged": true, "insertedId": ObjectId("5e490978dd099650a5401a56") }
> db.demo278.insertOne({"Subjects":["Spring","Hibernate"]});
{ "acknowledged": true, "insertedId": ObjectId("5e490984dd099650a5401a57") }
सभी डॉक्यूमेंट्स
> db.demo278.find();
परफॉरमेंस जांच क्वेरी
> db.demo278.find({Subjects:{$in:["Spring","MongoDB"]}}).explain();परिणाम (explain आउटपुट)
व्याख्या
- ensureIndex({"Subjects":1}): Subjects ऐरे पर आरोही इंडेक्स बनाता है
- isMultiKey: true: पुष्टि करता है कि यह मल्टी-की इंडेक्स है (ऐरे फील्ड पर)
- winningPlan.stage: "IXSCAN": इंडेक्स स्कैन उपयोग किया गया (पूर्ण संग्रह स्कैन नहीं)
- indexBounds: दिखाता है कि इंडेक्स "MongoDB" और "Spring" के लिए सटीक मानों पर खोज कर रहा है
- rejectedPlans: []: कोई वैकल्पिक योजना अस्वीकृत नहीं
बड़े डायनामिक डेटासेट के लिए टैग काउंटिंग रणनीतियाँ
- इंडेक्स्ड ऐरे फील्ड: टैग्स को ऐरे में स्टोर करें, इंडेक्स बनाएं
- एग्रीगेशन पाइपलाइन: $unwind + $group + $sort द्वारा काउंट करें
- मटेरियलाइज्ड व्यू: अलग कलेक्शन में टैग काउंट्स प्रीकंप्यूट करें
- चेंज स्ट्रीम्स: रियल-टाइम अपडेट के लिए काउंट्स सिंक करें
एग्रीगेशन काउंटिंग उदाहरण