2009-10-17 7 views
9

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

धन्यवाद।

उत्तर

6

एक रैम डायरेक्टरी तेज है, लेकिन डिस्क पर लिखी नहीं जाती है। यह तब तक अस्तित्व में है जब तक आपका प्रोग्राम चल रहा है, और जब भी आपका प्रोग्राम चलता है तब स्क्रैच से बनाया जाना चाहिए।

यदि आपकी अनुक्रमणिका रैम में आराम से फिट करने के लिए पर्याप्त छोटा है, और आप इसे अक्सर अपडेट नहीं करते हैं, तो आप डिस्क पर एक इंडेक्स बनाए रख सकते हैं और फिर RAMDirectory(Directory dir) कन्स्ट्रक्टर का उपयोग करके रैम डायरेक्टरी बना सकते हैं। एक बार जब आप इसे लोड करने के दंड का भुगतान कर लेंगे तो क्वेरी पर एक से पूछताछ करने के बाद क्वेरी करना तेज होना चाहिए। लेकिन अंतर को मापें - यदि सूचकांक RAMDirectory के रूप में स्मृति में फिट हो सकता है, तो यह डिस्क कैश में भी फिट हो सकता है, इसलिए आपको बहुत अंतर दिखाई नहीं दे सकता है।

+0

आपके इनपुट के लिए धन्यवाद .. क्या मुझे पता है कि "छोटा छोटा" कितना छोटा है? – user43498

+0

मैं आपकी उपलब्ध भौतिक रैम से छोटी कल्पना करूंगा। –

4

आपको राम डायरेक्टरी का उपयोग करना चाहिए। कम से कम लिनक्स में, ओएस बफर I/O के तरीके के कारण, RAMDirectory का उपयोग डिफ़ॉल्ट FSDirectory का उपयोग करने से कहीं अधिक तेज़ नहीं है।

12

मैं एफएस डायरेक्टरी और राम डायरेक्टरी की तुलना करता हूं।

  • सूचकांक आकार 1.4G
  • Centos, 5G स्मृति

खोजें 1000 कीवर्ड, औसत/मिनट/अधिकतम प्रतिक्रिया समय (ms) है यहाँ है

  • एफएस डायरेक्टरी
    • पहला रन: 351/7/2611
    • इसके दूसरे भाग: 47/7/837
    • तीसरे रन (पुनः आरंभ करने ऐप्स): 53/7/2343
  • RAMDirectory
    • पहली बार चलाने: 38/7/1133
    • इसके दूसरे भाग: 34/7/189
    • तीसरे रन (पुनः आरंभ करने ऐप्स): 38/7/959

तो, आप देख सकते हैं कि RAMDirectory तेज है तो FSDirectory, लेकिन 'ओएस फ़ाइल कैश गर्म हो जाने के बाद', गति अंतर इतना अलग नहीं है। RMADirectory का नुकसान क्या है? मेरे परीक्षण में

  • यह बहुत अधिक स्मृति खाता है, 1.4 जी फ़ाइल को स्मृति में लोड करने के लिए लगभग 2 जी की आवश्यकता है। जबकि एफएस डायरेक्टरी केवल 700 मीटर का उपयोग करता है। फिर इसका मतलब पूर्ण जीसी के लिए लंबा समय है।
  • इसे लोड करने के लिए और अधिक समय चाहिए, खासकर जब इंडेक्स फ़ाइल बड़ी हो। इंडेक्स खोलते समय इसे फ़ाइल से स्मृति में डेटा कॉपी करने की आवश्यकता होती है। इसका मतलब है कि ऐप को पुनरारंभ करते समय अधिक समय के लिए अनुरोध अवरुद्ध किए जाएंगे।
  • एक ही समय में दो इंडेक्स को बनाए रखना इतना व्यावहारिक नहीं है। क्योंकि हमारा ऐप प्रत्येक कई घंटों में इंडेक्स स्विच करता है।हम चाहते हैं कि नई इंडेक्स गर्म हो रही है जबकि पुरानी इंडेक्स अभी भी उसी टोमकैट में काम कर रही है।