बफ़र्ड डेटा सीमा कैसे बढ़ाएं?


16

उबंटू के भीतर मैंने 1 मिलियन रिकॉर्ड वाले एक MongoDB डीबी संग्रह का निर्माण किया है, और जब इसके खिलाफ एक तरह का आदेश चलाने की कोशिश की जा रही है, तो मुझे निम्नलिखित त्रुटि मिल रही है:

 "$err" : "Runner error: Overflow sort stage buffered data usage of 33555002 bytes exceeds internal limit of 33554432 bytes",
 "code" : 17144

कृपया कोई भी बता सकता है कि आंतरिक सीमा को कैसे बढ़ाया जाए ताकि मैं इसे और कुछ अन्य बड़े पैमाने पर आदेशों को डेटा के खिलाफ निष्पादित कर सकूं?


मुझे शक है आप कर सकते हैं। समस्या संभवतः आपके कथन के साथ है: क्या EXPLAIN दिखाता है कि आप एक INDEX का उपयोग कर रहे हैं? यदि आपको अपनी तालिका में एक INDEX जोड़ने की आवश्यकता नहीं है।
रिनजविंड

हाय रिनजविंड। मैं प्रदर्शन की तुलना करने की कोशिश कर रहा हूं, इसलिए मैं नोइंडेक्स, प्राइमरी इंडेक्स और सेकेंडरी इंडेक्स का उपयोग करके डेटा को चलाना चाहता हूं। क्या आप सुझाव दे रहे हैं कि बिना इंडेक्स के इस पैमाने को चलाना संभव नहीं है?
जॉन 295087

आह। वैसे मैं EXPLAIN का उपयोग करके प्रदर्शन की जांच करता हूं (जैसे ही EXPLAIN मुझे कम रिकॉर्ड नहीं देता है कि प्रदर्शन खराब है)। यदि आप इसे इस तरह से करना चाहते हैं, तो आपको संभवतः अपने रिकॉर्ड को सीमित करने की आवश्यकता होगी।
रिनविंड जूल

मैंने पाया है कि MongoDB इस डेटासेट में लगभग 25000 दस्तावेज़ों को संसाधित करेगा, लेकिन अधिक से अधिक कुछ भी हो जाता है ... मुझे लगता है कि यह डेटाबेस की एक सीमा है? आपकी टिप्पणीयों के लिए धन्यवाद।
जॉन 295087

जवाबों:


23

ऐसा बग की वजह से हो सकता है जैसे SERVER-13611 (इसलिए सुनिश्चित करें कि आप नवीनतम संस्करण पर हैं), या क्योंकि आप 2.6 में एक विरल सूचकांक पर सॉर्ट करने की कोशिश कर रहे हैं , लेकिन आमतौर पर यह इसलिए है क्योंकि आप बस सॉर्ट करने का प्रयास कर रहे हैं एक सूचकांक के बिना स्मृति में कई रिकॉर्ड।

आप जिस विशिष्ट सीमा को मार रहे हैं, वह जानबूझकर है और यहां प्रलेखित किया गया है - इसे बदला नहीं जा सकता है, इसलिए आपको क्रमबद्ध प्रदर्शन करने के लिए परिणामों के सेट को कम करने, या सूचकांक आदि का उपयोग करने की आवश्यकता है।

अपडेट (नवंबर 2014): आगामी 2.8 रिलीज (इसे लिखने के रूप में 2.8.0-rc0) अब इस सेटिंग को इस तरह से ट्विक करने की अनुमति देता है:

db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes: <limit in bytes>})

डिफ़ॉल्ट मान 32MiB (33554432 बाइट्स) है और इसे देखभाल के साथ समायोजित किया जाना चाहिए - बड़े-इन-मेमोरी प्रकार आपके डेटाबेस को एक पड़ाव के लिए पीसने का कारण बन सकते हैं (यही वजह है कि पहले स्थान पर एक सीमा थी)।


"इरम्सग": "सेट करने के लिए कोई विकल्प नहीं मिला, मदद का उपयोग करें: विकल्पों को देखने के लिए सच है"
मोहम्मद एफ़ाज़ती

1
संभावना है कि आप इस उत्तर के लिए अभी तक अलग संस्करण का उपयोग कर रहे हैं, यह कुछ समय पहले लिखा गया था
एडम सी

2

200K + रिकॉर्ड को छांटने और पृष्ठबद्ध करने पर मैं इस मुद्दे पर भी भाग गया। सबसे आसान समाधान एक सूचकांक जोड़ना प्रतीत होता है (उन विशेषताओं के लिए जिन्हें आप छांट रहे हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.