2011-04-14 17 views
10

मैं एसएएस के स्मृति, सॉर्टिंग के उपयोग के बारे में उत्सुक हूं, और ऐसा क्यों लगता है कि यह अक्षम है।एसएएस मेमोरी उपयोग और सॉर्टिंग

मेरे पास 8 जीबी रैम के साथ क्वाड कोर xeon है। मेरे पास 3 जीबी डेटासेट है। क्यों, किसी मानक समय के दौरान किसी भी समय, केवल 120 एमबी रैम का उपयोग किया जा रहा है और 15-20% CPU उपयोग कम है? ऐसा लगता है कि प्रक्रिया के साथ कुछ बेहद अक्षम है।

मेरी राय में, क्योंकि मेरे पास उपलब्ध स्मृति है, यह पूरे डेटासेट को लोड करेगा और फिर सभी उपलब्ध CPU चक्रों को समाप्त करने के लिए आगे बढ़ेगा। लेकिन केवल 15%? यह उपलब्ध संसाधनों का एक अद्भुत अपशिष्ट है और मुझे परेशान करता है। ऐसा लगता है कि यह लगातार डिस्क पर दर्द से धीमा है।

क्या कुछ जादुई सेटिंग है जो कहती है "एसएएस, आप सब कुछ तेजी से जाने के लिए उपयोग कर सकते हैं" मुझे याद आ रही है?

64 बिट ओएस 64 बिट एसएएस, बीटीडब्ल्यू चल रहा है।

उत्तर

6

आप अपने MEMSIZE और SORTSIZE सेटिंग्स देख सकते हैं। सॉर्ट प्रदर्शन के बारे में अधिक चर्चा here है।

1

सामान्यतः, ऐसा नहीं है कि एसएएस कैसे काम करता है। एसएएस आपके डेटा को आपके डिस्क ड्राइव पर रखता है और एक समय में केवल एक छोटा सा हिस्सा पढ़ता है। मेरे लिए, मुझे एसएएस का लाभ है: मैं उन सामानों के लिए एसएएस का उपयोग करता हूं जो रैम में फिट नहीं हो सकते हैं।

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

3

इस तरह की चीज यह है कि यह समय नहीं लेता है, आमतौर पर यह डेटा सेट को पढ़ रहा है और इसे फिर से लिख रहा है। छंटनी, तुलनात्मक रूप से, त्वरित है। तो एक 3 जीबी डेटा सेट के साथ डिस्क को सभी डेटा की आपूर्ति करने के लिए बस प्रतीक्षा करने का महत्वपूर्ण समय लिया जाता है। यह डेटा के हिस्सों को अधिक से अधिक पढ़ने के साथ ओवरलैप कर सकता है, लेकिन यह अभी भी I/O बाध्य होने की संभावना है। ने कहा कि, MEMSIZE और SORTSIZE कम से कम आपको अपनी उपलब्ध स्मृति का अधिकतम उपयोग करने की अनुमति देगा। आपको यह सुनिश्चित करने की ज़रूरत है कि एसएएस पूरे डेटा सेट को पढ़ेगा और इसे एक बार में सॉर्ट करेगा और फिर इसे फिर से लिख देगा। कम मेमोरी के साथ, या यदि MEMSIZE/SORTSIZE उपयुक्त रूप से कॉन्फ़िगर नहीं किया गया है, तो यह डेटा सेट को खंडों में सॉर्ट करेगा और फिर उन हिस्सों को मर्ज करना होगा। यदि आप संभवतः "मल्टी-पास सॉर्ट" से बचना चाहते हैं, तो यह जितना संभव हो उतना दोगुना हो जाएगा (पूरे डेटा सेट सॉर्टिंग हिस्सों के माध्यम से जाना होगा, फिर सभी डेटा के माध्यम से, उन हिस्सों को विलय करना होगा)। मुझे लगता है कि आपको SASLOG से संकेत मिलता है कि यह बहु-पास सॉर्टिंग है या नहीं।

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