एक आम दृष्टिकोण:
- लक्ष्य तालिका में अनुक्रमणिका / बाधाओं को अक्षम / ड्रॉप करें।
INSERT dbo.[Target] WITH (TABLOCKX) SELECT ...
- जेएनके को क्रेडिट के साथ, आप उपरोक्त
n
पंक्तियों के बैचों में कर सकते हैं, जो लेनदेन लॉग पर तनाव को कम कर सकता है, और निश्चित रूप से इसका मतलब है कि यदि कुछ बैच विफल रहता है, तो आपको केवल उस बैच से शुरू करना होगा। मैंने इस बारे में ब्लॉग किया (जबकि हटाए जाने के संदर्भ में, वही मूल अवधारणाएं यहां लागू होती हैं): http://www.sqlperformance.com/2013/03/io-subsystem/chunk-deletes
- लक्ष्य तालिका पर अनुक्रमणिका / अवरोधों को फिर से सक्षम / पुन: बनाएँ (और शायद आप उनमें से कुछ को स्थगित कर सकते हैं, यदि वे सभी कार्यों के लिए आवश्यक नहीं हैं, और आधार डेटा को जल्दी से ऑनलाइन प्राप्त करना अधिक महत्वपूर्ण है)।
यदि आपके विभाजन भौतिक हैं और केवल तार्किक नहीं हैं, तो आप अलग-अलग प्रक्रियाओं को एक साथ अलग-अलग विभाजन करके कुछ समय प्राप्त कर सकते हैं (बेशक इसका मतलब है कि आप उपयोग नहीं कर सकते TABLOCK
/ TABLOCKX
)। यह मानता है कि स्रोत ओवरलैपिंग / लॉकिंग आदि के बिना चयन करने वाली कई प्रक्रियाओं के लिए भी उपयुक्त है, और ऑपरेशन के उस पक्ष को भी धीमा बना देता है (संकेत: स्रोत पर एक क्लस्टर इंडेक्स बनाएं जो गंतव्य पर विभाजन योजना को सूट करता है)।
आप किसी चीज़ को बहुत अधिक आदिम भी मान सकते हैं, जैसे BCP OUT
/BCP IN
।
मुझे नहीं पता कि मैं इसके साथ मदद करने के लिए SSIS में कूद जाऊंगा। वहाँ शायद कुछ क्षमताएँ हैं, लेकिन मुझे नहीं पता कि प्रयास बचत को सही ठहराते हैं।