Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB क्वेरी प्लान को समझना

MongoDB में explain() का उपयोग करके क्वेरी एक्ज़ीक्यूशन प्लान विश्लेषण करना

MongoDB में किसी क्वेरी के एक्ज़ीक्यूशन प्लान को समझने के लिए explain() मेथड का उपयोग करें। यह बताता है कि क्वेरी कैसे निष्पादित होगी - इंडेक्स उपयोग, स्कैन प्रकार, और प्रदर्शन मेट्रिक्स।

उदाहरण: संग्रह, दस्तावेज़ और इंडेक्स बनाना

> db.demo408.insertOne({"Value":50});
{ "acknowledged" : true, "insertedId" : ObjectId("5e70e3a115dc524f70227678") }
> db.demo408.insertOne({"Value":20});
{ "acknowledged" : true, "insertedId" : ObjectId("5e70e3a715dc524f70227679") }
> db.demo408.insertOne({"Value":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5e70e3ac15dc524f7022767a") }
> db.demo408.insertOne({"Value":35});
{ "acknowledged" : true, "insertedId" : ObjectId("5e70e3af15dc524f7022767b") }
> db.demo408.createIndex({Value:1});
{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }

सभी दस्तावेज़ देखना

> db.demo408.find();

आउटपुट:

{ "_id" : ObjectId("5e70e3a115dc524f70227678"), "Value" : 50 }
{ "_id" : ObjectId("5e70e3a715dc524f70227679"), "Value" : 20 }
{ "_id" : ObjectId("5e70e3ac15dc524f7022767a"), "Value" : 45 }
{ "_id" : ObjectId("5e70e3af15dc524f7022767b"), "Value" : 35 }

क्वेरी प्लान विश्लेषण (Value > 40)

> db.demo408.explain().find( { Value: { $gt: 40 } } );

आउटपुट (मुख्य भाग):

{
  "queryPlanner" : {
    "plannerVersion" : 1,
    "namespace" : "test.demo408",
    "indexFilterSet" : false,
    "parsedQuery" : { "Value" : { "$gt" : 40 } },
    "winningPlan" : {
      "stage" : "FETCH",
      "inputStage" : {
        "stage" : "IXSCAN",
        "keyPattern" : { "Value" : 1 },
        "indexName" : "Value_1",
        "isMultiKey" : false,
        "direction" : "forward",
        "indexBounds" : { "Value" : [ "(40.0, inf.0]" ] }
      }
    },
    "rejectedPlans" : [ ]
  },
  "serverInfo" : { "host" : "...", "port" : 27017, "version" : "4.0.5" },
  "ok" : 1
}

मुख्य स्टेज व्याख्या:

  • IXSCAN: इंडेक्स स्कैन - इंडेक्स का उपयोग करके दस्तावेज़ खोजे गए
  • FETCH: इंडेक्स से मिले दस्तावेज़ों को लाना
  • COLLSCAN: कलेक्शन स्कैन - इंडेक्स नहीं उपयोग हुआ (खराब प्रदर्शन)
  • indexBounds: इंडेक्स में स्कैन की गई रेंज
  • rejectedPlans: अस्वीकृत वैकल्पिक प्लान

explain() मोड्स:

  • explain("queryPlanner") - केवल प्लानर जानकारी (डिफ़ॉल्ट)
  • explain("executionStats") - वास्तविक एक्ज़ीक्यूशन आंकड़े
  • explain("allPlansExecution") - सभी प्लान्स के आंकड़े

प्रदर्शन ट्यूनिंग: यदि COLLSCAN दिखे, तो उचित इंडेक्स बनाएं।

  1. - MongoDB में _id द्वारा समूह कैसे बनाएं

    MongoDB में _id द्वारा समूह बनाने के लिए, $group का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo529.insertOne({Score:10}); { acknowledged : true, insertedId : ObjectId(5e8b1d5bef4dcbee04fbbbe4) } > db.demo529.insertOne({Score:20}); { acknowledged : true, insertedId : ObjectId(

  1. - MongoDB Query - Collection Rename करना

    MongoDB में collection rename करने के लिए renameCollection() का उपयोग करें। Collection बनाना > db.demo690.insertOne({_id:101,Name:Sam}); { acknowledged : true, insertedId : 101 } > db.demo690.insertOne({_id:102,Name:Mike}); { acknowledged : true, insertedId : 102 } > db.demo690.insertOne({

  1. - MongoDB में एम्बेडेड दस्तावेजों को क्वेरी करें

    MongoDB में एम्बेडेड दस्तावेजों को क्वेरी करने के लिए, aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo705.insertOne( { _id:101, Information: [ { StudentName:Chris, StudentAge:21 }, { StudentName:David, StudentAge:23 },