2016-11-23 2 views
6

निम्नलिखित में आपकी मदद की ज़रूरत है:मोंगोडीबी। इंडेक्स द्वारा अनुरोध इतने धीरे-धीरे क्यों किए जाते हैं?

मेरे पास एक मोंगोडीबी संग्रह है जिसमें 26 लाख दस्तावेज़ शामिल हैं। दस्तावेज़ की संरचना स्थिर है (pastebin.com/iBzW0Fkz)

संग्रह "उन" पर एक सूचकांक में शामिल क्षेत्र

db.conversations.getIndexes(); 

परिणाम - pastebin.com/xHecpw00

क्षेत्र के लिए सभी अनुरोधों " उन "प्रदर्शन कर रहे हैं बहुत धीमी गति से (100 से अधिक एमएस)

db.getCollection('conversations').find({users: {$all: ["5942328", "9082468"]}}); 

व्याख्या - pastebin.com/0C11Cr9F

01,235,
db.getCollection('conversations').find({users: "9163099"}); 

व्याख्या - pastebin.com/CmvuDf10

प्रश्नों की सूची:

  1. क्यों सूचकांक द्वारा अनुरोध तो धीरे धीरे प्रदर्शन कर रहे हैं?
  2. mongodb सर्वर या प्रक्रिया को पुनरारंभ करने के बाद अनुक्रमणिका को गर्म कैसे करें? टच() निर्देश अब वायर्ड टाइगर इंजन में उपलब्ध नहीं है।

यहाँ यह एक अतिरिक्त जानकारी

db.stats(); 

परिणाम है - pastebin.com/9JZF8ChQ

db.getCollection('conversations').stats(); 

परिणाम - pastebin.com/17yV4Fsi

db.conversations.getIndexes(); 

परिणाम - pastebin .com/xHecpw00

,210

सर्वर के बारे में जानकारी:

lscpu - pastebin.com/k7wUE4gH

lshw-लघु - pastebin.com/w5XYuY3U

एक धारणा है कि HDD से आपरेशन पढ़ा नहीं है है एक बाधा और एसएसडी इस मुद्दे को हल कर सकती है, लेकिन इसका परीक्षण करने का कोई मौका नहीं है।

अग्रिम धन्यवाद।

उत्तर

0
  1. मुझे लगता है कि समस्या यह है कि आपके पास बहुत अधिक डेटा है।
  2. आपकी अनुक्रमणिका सरणी क्षेत्र पर है, जो प्रभावशाली नहीं है क्योंकि आपकी अनुक्रमणिका बहुत बड़ी हो जाती है क्योंकि मोंगोडीबी सरणी के प्रत्येक मान को इंडेक्स करता है, ताकि आप अलग-अलग वस्तुओं के लिए पूछ सकें।

आप sharding पर गौर कई उदाहरण भर में अपने डेटा को विभाजित करने के लिए है, लेकिन ध्यान दें कि आप नहीं चुन सकते कर सकते हैं users field as shard key

संबंधित मुद्दे