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

MongoDB में इंडेक्स कैसे रीबिल्ड करें?

MongoDB में किसी संग्रह पर सभी इंडेक्स रीबिल्ड करने के लिए, reIndex() कमांड का उपयोग करें। यह सभी इंडेक्स ( _id को छोड़कर) को ड्रॉप करता है और उन्हें पुनर्निर्मित करता है, जो इंडेक्स भ्रष्टाचार या खंडन के बाद उपयोगी हो सकता है।

उदाहरण: इंडेक्स बनाएं

> db.demo42.createIndex({"StudentFirstName":1});
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }

सभी इंडेक्स रीबिल्ड करें

> db.demo42.reIndex({"StudentFirstName":1});

नोट: reIndex() एक वैकल्पिक इंडेक्स स्पेसिफिकेशन तर्क स्वीकार करता है लेकिन **सभी** इंडेक्स रीबिल्ड करता है; तर्क अनदेखा किया जाता है (विरासत संगतता)।

परिणाम

{
    "nIndexesWas" : 2,
    "nIndexes" : 2,
    "indexes" : [
        { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "web.demo42" },
        { "v" : 2, "key" : { "StudentFirstName" : 1 }, "name" : "StudentFirstName_1", "ns" : "web.demo42" }
    ],
    "ok" : 1
}

व्याख्या

  • nIndexesWas: रीबिल्ड से पहले इंडेक्स की संख्या।
  • nIndexes: रीबिल्ड के बाद इंडेक्स की संख्या।
  • indexes: इंडेक्स विवरण सरणी (_id इंडेक्स हमेशा मौजूद)।

कब उपयोग करें

  • इंडेक्स भ्रष्टाचार के बाद (दुर्लभ)।
  • बड़े पैमाने पर डिलीट/अपडेट के बाद खंडन पुनर्प्राप्त करने के लिए।
  • रखरखाव विंडो के दौरान।

चेतावनी

  • reIndex() संग्रह पर एक्सक्लूसिव लॉक प्राप्त करता है; सभी पढ़ने/लिखने ऑपरेशन अवधि के लिए ब्लॉक होते हैं।
  • <ली>बड़े संग्रह के लिए, यह धीमा हो सकता है; रखरखाव विंडो के दौरान चलाएं। <ली>शार्डेड क्लस्टर में, प्रत्येक शार्ड पर reIndex चलाएं।

वैकल्पिक: विशिष्ट इंडेक्स रीबिल्ड करें

एकल इंडेक्स रीबिल्ड करने के लिए, इसे ड्रॉप करें और पुनः बनाएं:

> db.demo42.dropIndex("StudentFirstName_1");
> db.demo42.createIndex({"StudentFirstName":1});

यह केवल उस इंडेक्स को प्रभावित करता है और समान लॉकिंग प्रभाव डालता है।

  1. - MongoDB में फील्ड प्रोजेक्ट करना

    MongoDB एग्रीगेशन में $project और $cond का उपयोग करके डायनामिक फील्ड प्रोजेक्शन MongoDB में जब दस्तावेज़ों में अलग-अलग फील्ड नाम हों (जैसे Marks1/Score1), तो $project के साथ $cond और $ifNull का उपयोग करके एकीकृत स्कीमा में प्रोजेक्ट करें। उदाहरण: संग्रह और दस्तावेज़ बनाना > db.demo439.insertOne(

  1. - MySQL टेबल या इंडेक्स को रीबिल्ड या रिपेयर करना

    टेबल और इंडेक्स में परिवर्तन इस बात को संदर्भित करते हैं कि MySQL डेटा प्रकार और कैरेक्टर सेट को कैसे संभालता है। आवश्यक टेबल मरम्मत या अपग्रेड CHECK TABLE, mysqlcheck, या mysql_upgrade द्वारा रिपोर्ट किए जाते हैं। टेबल रीबिल्ड करें टेबल रीबिल्ड करने के कई तरीके हैं। उनमें से कुछ नीचे सूचीबद्ध हैं

  1. MongoDB में अनयूज्ड इंडेक्स की पहचान कैसे करें इष्टतम प्रदर्शन के लिए MongoDB में अनयूज्ड इंडेक्स की पहचान कैसे करें इष्टतम प्रदर्शन के लिए

    संस्करण 3.2 से शुरू होकर, MongoDB हर इंडेक्स के लिए उपयोग के आंकड़ों को ट्रैक करता है। इन आंकड़ों तक पहुंचने के लिए, MongoDB $indexStats एग्रीगेशन पाइपलाइन चरण प्रदान करता है। यहां MongoDB में अनयूज्ड इंडेक्स खोजने पर छह विचार दिए गए हैं। उदाहरण के लिए, निम्न कमांड test.foo कलेक्शन के लिए इंडेक्स आं