2010-10-26 10 views
5

पर मुझे क्या फायदे हैं I ऐप विरासत में मिला है और यह 1000 रिकॉर्ड के हिस्सों में एक (xml फ़ाइल) के साथ 4 दृश्यों से डेटा प्राप्त करता है, फिर उन्हें एक XML फ़ाइल में लिखता है यह सब एक प्रकार पैरामीटर द्वारा विभाजित है जिसमें 9 अलग-अलग संभावनाएं हैं। इसका मतलब है कि सबसे बुरे मामले में डाटाबेस के 36 प्रकार उस प्रकार के प्रत्येक प्रकार/दृश्य संयोजन के लिए होंगे।एक बड़े डेटाबेस क्वेरी के कई छोटे से अधिक

वास्तविक डेटा 90,000 लाइनों का अस्तित्व होगा और इस मामले में 900 - 9 36 बार डेटाबेस से 1000 लाइनों तक पहुंच जाएगा।

अब मुझे आश्चर्य है कि ऐप में सभी डेटा पढ़ने के लिए यह कौन सा फायदे देगा और 900+ फ़ाइलों को लिखने के लिए ऐप को इसके साथ काम करेगा।

1000 लाइनें 800 एमबी है, 90,000 लाइनें लगभग 81 जीबी डेटा स्थानांतरित की जा रही हैं।

कोड को फिर से लिखना होगा यदि हम इसे एक साथ पढ़ते हैं और हालांकि यह अधिक समझ में आता है कि यह एक बार नौकरी है। 90,000 लाइनों के बाद, हम इस कोड का फिर से उपयोग नहीं करेंगे। क्या यह कोड को फिर से लिखने के लिए 2, 3 घंटे खर्च करने के लायक है जो इस तरह की कनेक्शन को कम करने के लिए काम करता है?

+7

यह एक बार फिर से लिखने योग्य नहीं लगता है, अगर यह एक बार की नौकरी है। जब मैं इस वाक्य को टाइप करना समाप्त करता हूं तो यह वास्तव में निष्पादन समाप्त कर सकता है। –

+1

क्या परीक्षण और काम करने वाले एकल उपयोग कोड को फिर से लिखने के लिए किसी भी समय लायक है? यदि कोई वास्तविक समस्या नहीं है, तो मैं कहूंगा कि आप शायद अपने समय के लिए बेहतर उपयोग कर सकते हैं ... – Kendrick

+0

क्या एक ही लेनदेन के अंदर कई अनुरोध किए जाते हैं? क्या डेटा किसी webservice पर या सीधे बॉक्स पर जा रहा है? मैं कहूंगा कि सवाल का जवाब देने के लिए ये महत्वपूर्ण हैं। – PaulG

उत्तर

6

यदि यह एक बार की बात है तो इसे अनुकूलित करने के लिए कोई प्रयास क्यों करें? उत्तर: नहीं।

हालांकि, मुझे अपने सामान्य के जवाब में जोड़ने दें, इस सवाल के बारे में सवाल है कि बड़ी संख्या में छोटे से छोटे लोगों के पास क्या लाभ होता है: शायद कोई नहीं। यदि आप एक बड़ी क्वेरी चलाते हैं तो आप मिडलवेयर तक बहुत सारे जादू को छोड़ रहे हैं, यह अच्छी तरह से काम कर सकता है या नहीं।

जबकि 36 एक साथ कनेक्शन होने पर इष्टतम नहीं है, यह शायद एक क्वेरी चलाने से बेहतर है जो 80 गीगाबाइट डेटा लौटा सकता है। आदर्श समाधान (यदि आपको इस कोड का एक से अधिक बार उपयोग करना था) तो इसे डेटा में डेटा प्राप्त करने के लिए फिर से लिखना होगा, लेकिन कई कनेक्शन एक साथ खुलने नहीं देंगे।

+0

यह वास्तव में एक समय में केवल 1 कनेक्शन होगा, लेकिन लाइव मामले में, एक लूप में 936 बार दोहराया जाता है। अगर मुझे आपका जवाब सही तरीके से मिलता है, तो आदर्श समाधान वह है जो मेरे पास है। – Andy

+0

हाँ, मुझे विश्वास है! डेटा के बड़े ब्लॉक को संभालने के लिए भाग में डेटा प्राप्त करना सबसे अच्छा अभ्यास है। अन्यथा आप किसी भी अन्य इंटरमीडिएट सिस्टम (एसक्यूएल सर्वर, .NET, LINQ, डेटा प्रदाता, आदि) के आधार पर आपके और सर्वर के बीच और आगे भेजे जा रहे प्रवाह के प्रवाह को प्रबंधित करने के लिए निर्भर हैं। सबसे बुरे मामले में, एप्लिकेशन पूरे परिणाम को समकालिक रूप से लोड करने का प्रयास कर सकता है। Asp.net शायद इसे किसी भी तरह से प्रबंधित करेगा, मुझे बिल्कुल यकीन नहीं है कि डिफ़ॉल्ट हैंडलिंग क्या होगी, लेकिन यह आपके आवेदन को बेहतर बनाने के लिए बेहतर है कि एक समय में अनुरोध करने के लिए कितना डेटा उचित है। –

+0

एक और अवलोकन - 800 मेगाबाइट अभी भी एक ही समय में स्मृति में लोड करने के लिए बहुत अधिक डेटा है। मेमोरी आवंटन/डेलोकेशन धीमा हो सकता है, शायद यह हिस्सा आकार को कम करने के लिए बेहतर होगा। यदि सभी एप्लिकेशन एक पंक्ति पढ़ रहे हैं और इसे एक एक्सएमएल फ़ाइल में पार्स कर रहे हैं, और प्रत्येक पंक्ति में अपने काम करने के अलावा किसी भी डेटा की आवश्यकता नहीं है, तो एक समय में एक पंक्ति भी प्राप्त करना उचित लगता है प्रत्येक पंक्ति में। –

4

क्या कोड पहले से ही काम करता है? अगर ऐसा होता है, तो मैं इसे फिर से लिखने में समय नहीं लगाऊंगा। आप कोड में बग पेश करने के जोखिम में भाग लेते हैं। चूंकि आप इसे एक बार उपयोग करेंगे और कभी भी इसका उपयोग नहीं करेंगे, ऐसा लगता है कि यह प्रयास के लायक नहीं है।

4

यदि हम SQL सर्वर से बात कर रहे हैं, तो सबसे छोटे हानिकारक कई छोटे लोगों पर एक बड़ी क्वेरी (एक बैच) के नुकसान (आपके द्वारा पूछे जा रहे प्रश्न के विपरीत अर्थ को नोट करें) यह है कि केवल एक प्रश्न योजना हो सकती है प्रति बैच

1

यदि यह एक बार नौकरी है तो मैं नहीं कहूंगा। कई बार मैंने ऐसी चीजें की हैं जो मैं सामान्य रूप से नहीं करता (कर्सर) लेकिन केवल इसलिए कि यह एक बार नौकरी थी।

अपने आप से पूछें कि यह पहले से काम करने वाले किसी चीज़ पर 2 से 3 घंटे बिताने का अर्थ है और आप कभी भी फिर से उपयोग नहीं करेंगे। यद्यपि खाते में ध्यान देने के लिए स्पष्ट रूप से अन्य कारक हैं। जैसे यह आपके उत्पादन डेटाबेस को 2-3 घंटे तक लॉक करेगा?

यदि कोई विनाशकारी साइड इफेक्ट्स नहीं हैं तो मैं कहूंगा कि आपके पास क्या है।

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