DB प्रदर्शन को अधिकतम करने के लिए, SSIS के माध्यम से SQL Server 2008 में बड़ी मात्रा में डेटा लोड करने के बाद कौन से कमांड चलाने चाहिए


11

मैंने खाली डेटाबेस में परीक्षण डेटा लोड करने के लिए SSIS पैकेज लिखा है। तालिकाओं में से कुछ बहुत बड़ी हैं (~ 700 मिलियन पंक्तियाँ)। एक बार SSIS पैकेज पूरा हो जाने के बाद डेटाबेस के प्रदर्शन को अधिकतम करने के लिए मेरे द्वारा चलाए जाने वाले कोई भी आदेश हैं (प्रशिक्षु डीबीए के रूप में)?

उदाहरण के लिए, मैंने निष्पादित किया EXEC sp_updatestatsलेकिन यह बताया कि किसी भी सूचकांक को अद्यतन करने की आवश्यकता नहीं है।

क्या बड़ी मात्रा में डेटा लोड होने के बाद चीजों की एक सूची है या SQL Server 2008 सिर्फ आपके लिए यह सब ध्यान रखता है?

जवाबों:


8

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

  • लोड करने से पहले सभी NC इंडेक्स को गिरा दें।
  • लोड करने के बाद, प्रत्येक तालिका के लिए NC अनुक्रमों को अनुक्रम में जोड़ें अर्थात् तालिकाए में एक सूचकांक नहीं जोड़ें, फिर टेबलबी, फिर टेबलए पर वापस। इसका विखंडन पर कोई प्रभाव नहीं है, लेकिन यह बहुत बड़े डेटासेट पर अनुक्रमित जोड़ने के लिए लिए गए समय में सुधार कर सकता है (बफर पूल मंथन को कम करता है)।
  • यदि आप संकुल अनुक्रमणिका क्रम में किसी तालिका में डेटा सम्मिलित कर सकते हैं, तो गुच्छित सूचकांक को जगह में छोड़ दें। यदि आप नहीं कर सकते, तो डेटा को एक ढेर में डंप करें और एक क्लस्टर इंडेक्स पोस्ट लोड में पुनर्निर्माण करें।

कॉपी और पेस्ट करने के बजाय, मैं आपको BCP पर पूछे गए एक प्रश्न के उत्तर में ETL ऑप्टिमाइज़ेशन @ मेरियन के लिए संदर्भों की बहुत व्यापक सूची की ओर इशारा करता हूँ । इनमें से कई आपके परिदृश्य पर समान रूप से लागू होंगे।


2
दिलचस्प है, SQLCAT और SSIS से वीडियो के लिंक पर उनकी खोज एक NC इंडेक्स को कभी नहीं छोड़ती है। अनुमान है कि यह अभी भी "निर्भर करता है" का एक और मामला है
बिलिंक

2
@billinkc यह था कि वृद्धिशील भार के लिए नहीं, खाली डेटाबेस के बजाय यह प्रश्न भी संदर्भित करता है? किसी भी तरह से, SQLCAT परीक्षण हार्डवेयर के एक वर्ग को शामिल करता है जो कि विशिष्ट संगठनों में शायद ही कभी देखा जाता है।
मार्क स्टोरी-स्मिथ

5

यह इस बात पर निर्भर करता है कि आपके पास कितनी खिड़की है लेकिन आम तौर पर आँकड़े अपडेट करना और अनुक्रमण / पुनर्गठन करना एक अच्छा कदम है। इसके अलावा वास्तव में आपको कुछ और नहीं करना चाहिए।

आँकड़े क्वेरी ऑप्टिमाइज़र को बताते हैं कि एक ऑपरेशन से कितनी पंक्तियाँ प्रभावित होने की संभावना है और यह बदले में SQL को बताता है कि आपके प्रश्नों को चलाने के लिए कौन सा दृष्टिकोण लेना चाहिए। डेटा सम्मिलित करना वितरण को तिरछा कर सकता है और यदि आपने ऑटो अपडेट मोड में आंकड़ों के अपडेट को ट्रिगर करने के लिए पर्याप्त पंक्तियाँ नहीं डाली हैं तो मैनुअल को मदद करनी चाहिए। यदि आपके पास खिड़की है, तो मैं कहता हूं कि आँकड़े अद्यतन भाग रखें।

डेटा को जोड़ते ही इंडेक्स खंडित हो सकते हैं। पुनर्निर्माण या पुनर्गठन से इसे कम करने में मदद मिलती है जिससे वास्तव में आपके डेटा तक पहुंचने पर बेहतर प्रदर्शन हो सकता है।


4
SQLCAT के SSIS वीडियो में से एक में इंडेक्स की तर्ज पर , वे भी अंगूठे के एक नियम का सुझाव देते हैं कि यदि आपका डेटा विकास> 100% है और एक एकल NCI है, तो उन्हें ड्रॉप और रीक्रिएट करें। यदि यह 10% से अधिक है और 2+ एनसीआई हैं, तो ड्रॉप और रीक्रिएट बेहतर प्रदर्शन देगा।
बिलिंक

2
बिल की टिप्पणी को स्पष्ट करने के लिए - मुझे लगता है कि वह कह रहा है कि यह सुझाव ड्रॉप-क्रिएट करने के लिए है कि उनका मतलब ड्रॉप इंडेक्स है, अपना डेटा लोड करें, फिर अपने इंडेक्स को फिर से बनाएं .. बल्कि लोड के दौरान इंडेक्स (एस) को छोड़ दें। के बाद पुनर्निर्माण। मुझे लगता है कि वैसे भी :-) और हाँ, महान बिंदु, मैं +1 कि टिप्पणी।
माइक वॉल्श
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.