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

MongoDB बड़े सूचकांक का निर्माण बहुत धीमी गति से होता है

गलतफहमी

गति

मल्टी की इंडेक्स की बात न करने पर भी, यहाँ क्या होता है। बड़े पैमाने पर टेबल स्कैन चल रहा है। तो mongoDB दस्तावेज़ों पर पुनरावृति करता है, अनुक्रमित किए जाने वाले फ़ील्ड को खोजने का प्रयास करता है, उस फ़ील्ड का मूल्यांकन करता है (null पर) यदि यह वर्तमान दस्तावेज़ में मौजूद नहीं है) और इसके निष्कर्षों को कम से कम 6 फाइलों में लिखता है क्योंकि हम 6 सूचकांकों की बात कर रहे हैं। गणित करना:200.000.000 / 86400 * 5 हमें बताता है कि mongoDB लगभग 460 दस्तावेज़ प्रति सेकंड के लिए ऐसा करता है या केवल प्रति दस्तावेज़ 2.2 मिलीसेकंड . की आवश्यकता है . मैं इसे धीमा नहीं कहूंगा। इसमें लंबा समय लग सकता है, लेकिन यह धीमा नहीं है।

{background:true}

इस पैरामीटर का उपयोग नहीं . करता है आपको डेटाबेस से बाहर लॉक करें। इसके विपरीत, जो दस्तावेज़ों में स्पष्ट रूप से कहा गया है, दोनों सूचकांक निर्माण अनुभाग और बैकग्राउंड में इंडेक्स बनाने के ट्यूटोरियल सेक्शन में ए> . हालांकि, एक वाक्य है जिसका आसानी से गलत अर्थ निकाला जा सकता है:

इसका मतलब यह है कि आप सभी डेटाबेस और . पर लागू होने वाले ऑपरेशन नहीं कर सकते हैं पढ़ने या लिखने के लॉक की आवश्यकता है।

सुधार करने के तरीके (भविष्य में)

शेयर्ड क्लस्टर

प्रतिकृति सेट शार्क के साथ साझा क्लस्टर का उपयोग करें। इसे स्थापित करना आसान है और बेहतर प्रदर्शन के अलावा इसके कई फायदे हैं। उनमें से एक शार्ड जोड़ना आसान मापनीयता है (और इस प्रकार क्लस्टर में स्थान और कंप्यूटिंग शक्ति जोड़ना) बहुत है आसान। बैकअप का अनुप्रयोग पर कम प्रभाव पड़ता है। अब विफलता का एक भी बिंदु नहीं है (जब सही किया जाता है, तो यह पूरे डेटासेंटर के पैमाने पर आउटेज पर भी लागू होता है)।

किसी भिन्न फ़ाइल सिस्टम का उपयोग करें

क्षमा करें, विंडोज सर्वर पर डिस्क io प्रदर्शन निर्भर एप्लिकेशन चलाने से मुझे कोई मतलब नहीं है - बिल्कुल। अनुकूलन के आधार पर, ExtFS4 या XFS NTFS या ReFS की तुलना में 25% से 40% तेज हैं। यह एक वास्तविक . बनाता है उन अनुप्रयोगों पर अंतर जो आपके उपयोग के मामले की तरह डिस्क IO पर निर्भर हैं। हम कुछ दिनों की बात कर रहे हैं (लिनक्स सिस्टम पर ओएस की अधिक कुशल मेमोरी मैपिंग और कम मेमोरी खपत को भी ध्यान में नहीं रखते)।

{background:true}

हालांकि यह वास्तव में प्रदर्शन में सुधार नहीं करता है (वास्तव में पृष्ठभूमि में इंडेक्स बनाने में स्पष्ट कारणों से अग्रभूमि की तुलना में अधिक समय लगता है), आपका एप्लिकेशन उस समय के दौरान उपलब्ध रहता है जब इंडेक्स बनाया जाता है। तो आपकी आवश्यकताओं के आधार पर, यह एक व्यवहार्य विकल्प हो सकता है।

साइड नोट :यह एक बुरा विचार™ है , mongoDB का उपयोग करते समय लंबवत रूप से स्केल करने के लिए क्योंकि इसे स्पष्ट रूप से क्षैतिज रूप से स्केल करने के लिए डिज़ाइन किया गया था। यह विशेष रूप से आपके जैसे बड़े संग्रह के लिए लागू होता है क्योंकि समानांतर प्रसंस्करण से आपके आवेदन के प्रदर्शन में काफी सुधार होगा।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB में मौजूदा फ़ील्ड के अंत में एक स्ट्रिंग जोड़ें

  2. MongoDB:क्या थोक संचालन ओप्लॉग को समग्र रूप से लिखा जाता है?

  3. MongoDB बाध्य प्रश्न:मैं मील को रेडियन में कैसे परिवर्तित करूं?

  4. नेवला के साथ बैच अद्यतन

  5. नेवला सभी दस्तावेजों में एक मूल्य का योग करता है