BLOB डेटा के लिए BCP प्रदर्शन का अनुकूलन


13

मैं एक 2TB डेटाबेस के विभाजन के लिए लाइव प्रवास की योजना बना रहा हूँ। यह प्रणाली मोटे तौर पर एक दस्तावेज़ की दुकान बोल रही है, जिसमें 50kb और 500kb के बीच LOB के लिए आवंटित किया जा रहा है, जिसमें 500kb से 1MB की रेंज में एक छोटा प्रतिशत है। माइग्रेशन के भाग में पुराने से नए डेटाबेस में BCPing डेटा शामिल होगा।

बीसीपी पसंदीदा तरीका है क्योंकि डेटा में वर्तमान / ऐतिहासिक विभाजन एक अंतिम स्विच से पहले चरणों में (शांत अवधि के दौरान) पुराने डेटा को निकालने की अनुमति देता है, लाइव सिस्टम पर प्रभाव को कम करता है। डेटा की मात्रा और भंडारण की उपलब्धता इन-सीटू को एक विभाजन योजना के पुनर्निर्माण के लिए प्राथमिकता देती है

मुझे संदेह है कि BLOB सामग्री के कारण, ROWS_PER_BATCH के बजाय KILOBYTES_PER_BATCH के साथ प्रयोग करके कुछ प्रदर्शन लाभ हो सकते हैं। यह BCP दस्तावेज़ीकरण में सुझाया गया है कि SQL इस मान के आधार पर संचालन को अनुकूलित कर सकता है।

जो कुछ मुझे नहीं मिल रहा है वह इन ऑप्टिमाइज़ेशन की प्रकृति पर या मेरा परीक्षण शुरू करने के लिए कहां है। सुझावों की अनुपस्थिति में मैं शुरू करने के लिए 4/8/16/32 / 64mb सीमाओं पर कम रन की कोशिश करूंगा।

पैकेट आकार (BCP -a पैरामीटर, सर्वर स्तर सेटिंग के बजाय) को बदलने से संभवतः कुछ लाभ होंगे, लेकिन मैं इसे अधिकतम 65535 तक टक्कर देने के लिए इच्छुक हूं, जब तक कि किसी के पास अधिक सूत्र दृष्टिकोण न हो।

जवाबों:


12

यह आपके प्रश्न का सीधा उत्तर नहीं है, लेकिन कुछ लेख हैं जिन्हें आप उन्हें पढ़ने से लाभान्वित होंगे (यदि आपने उन्हें पहले नहीं पाया था तो :-))। वे bcp / बल्क कॉपी का उपयोग करके बहुत सारे डेटा लोड करने के बारे में हैं। मैंने उन सभी को पढ़ा है और मुझे KILOBYTES_PER_BATCH के बारे में कुछ भी विस्तृत नहीं मिला है, वे सभी ROWS_PER_BATCH का उपयोग कर रहे हैं, लेकिन मुझे यकीन है कि आपको अन्य उपयोगी जानकारी मिलेगी।

  • 1 घंटे (SQL CAT टीम से) में 1TB लोड करें - यहाँ से सलाह की सूची (उद्धरण):

    • आपके पास उपलब्ध सीपीयू के रूप में कई लोड प्रक्रियाओं को चलाएं। यदि आपके पास 32 सीपीयू हैं, तो 32 समानांतर भार चलाएं। यदि आपके पास 8 सीपीयू हैं, तो 8 समानांतर भार चलाएं।
    • यदि आपके पास अपनी इनपुट फ़ाइलों के निर्माण पर नियंत्रण है, तो उन्हें एक आकार का बनाएं जो समान रूप से लोड थ्रेड की संख्या से विभाज्य है जिसे आप समानांतर में चलाना चाहते हैं। यह भी सुनिश्चित करें कि यदि आप स्विच विभाजन रणनीति का उपयोग करना चाहते हैं तो सभी रिकॉर्ड एक ही पार्टीशन से संबंधित हैं।
    • यदि आप SQL सर्वर मशीन पर प्रक्रिया चला रहे हैं तो BCP के बजाय BULK इन्सर्ट का उपयोग करें।
    • एक और 8-10% हासिल करने के लिए तालिका विभाजन का उपयोग करें, लेकिन केवल अगर आपकी इनपुट फाइलें आपके विभाजन फ़ंक्शन से मेल खाने के लिए निर्देशित की जाती हैं, तो इसका मतलब है कि एक फ़ाइल में सभी रिकॉर्ड एक ही विभाजन में होना चाहिए।
    • लॉकिंग टाइम पर पंक्ति से बचने के लिए TABLOCK का उपयोग करें।
    • यदि आप एक तालिका में कई स्ट्रीम आयात कर रहे हैं, तो प्रति BATCH = 2500 या इसके पास कुछ का उपयोग करें।
  • बड़े पैमाने पर रिलेशनल डेटा वेयरहाउस (SQL CAT टीम से) के निर्माण के लिए शीर्ष 10 सर्वश्रेष्ठ अभ्यास - सलाह (उद्धरण):

    • प्रारंभिक डेटा लोड के दौरान SIMPLE या BULK LOGGED रिकवरी मॉडल का उपयोग करें।
    • क्लस्टर किए गए अनुक्रमणिका के साथ विभाजित तथ्य तालिका बनाएँ।
    • प्रत्येक विभाजन के लिए गैर-अनुक्रमित स्टेजिंग टेबल बनाएं, और प्रत्येक विभाजन को पॉपुलेट करने के लिए अलग-अलग स्रोत डेटा फ़ाइलें।
    • समानांतर में चरणबद्ध तालिकाओं को पॉप्युलेट करें (कई BULK INSERT, BCP या SSIS कार्यों का उपयोग करें)
    • प्रत्येक स्टेजिंग टेबल पर एक संकुल सूचकांक बनाएँ, फिर उपयुक्त CHECK बाधाएँ बनाएँ।
    • विभाजन की तालिका में सभी विभाजन देखें।
    • विभाजन तालिका पर गैर-संकुलित अनुक्रमित बनाएँ।
  • डेटा लोड हो रहा है प्रदर्शन गाइड (SQL कैट टीम से)

  • एक विभाजन तालिका में थोक डेटा लोड हो रहा है - एसक्यूएल सर्वर सर्वश्रेष्ठ अभ्यास लेख (तकनीक लेख)

  • SQL सर्वर 2000 इंक्रीमेंटल बल्क लोड केस स्टडी (तकनीक लेख)

  • सबक सीखा और एक बड़े फास्ट ट्रैक POC (SQL CAT टीम से)

  • SQL सर्वर BCP के लिए प्रदर्शन ट्यूनिंग युक्तियाँ (ब्रैड McGehe द्वारा)

  • प्रदर्शन प्रभाव: सबसे इष्टतम बैच आकार ढूँढना (लिंची शीया द्वारा)

और स्पष्ट MSDN संदर्भ:

अपने व्यक्तिगत अनुभव में, मैं कई बैच आकारों के साथ समानांतर लोड और परीक्षण का उपयोग करके एक तेज़ डेटा लोड बनाने में सफल रहा। मुझे लगता है कि केवल व्यक्तिगत परीक्षण आपको सूट करेगा। उम्मीद है आपको संदर्भों में कुछ अच्छी सलाह मिलेगी।


धन्यवाद मारियन, मैंने उस संपूर्ण सूची से कुछ नए खोज किए हैं। एक बंद कार्य के रूप में, वृद्धिशील / परिष्कृत कदमों में से कई उपयोगी नहीं हैं, लेकिन इसमें बहुत सारे सुझाव हैं जिनका मैं उपयोग कर सकता हूं।
मार्क स्टोरी-स्मिथ

हां, मुझे आपकी अनुभूति होती है, क्योंकि मेरे लिए भी एक समय का काम था, और सूची में कुछ उपयोगी सामान मिला। यह एक महान कार्य है, हालांकि :-)। आप लिंची शीया के एक अन्य लेख की तरह एक छोटा .NET एप्लीकेशन भी कर सकते हैं (यदि आप .NET से परिचित हैं), प्रदर्शन प्रभाव: सबसे अधिक ऑप्टिमल इंसर्ट स्क्रिप्ट बल्ककॉपी को हरा नहीं सकते । आपको वही मिल सकता है जैसा उसने किया था :-)।
मैरियन

के रूप में वहाँ जंगली में BCP के लिए किसी भी BLOB विशिष्ट मार्गदर्शन नहीं लगता है, मैं स्वीकार कर रहा हूँ के रूप में आपके बहुत गहन जवाब दे रहा हूँ। एक बार फिर धन्यवाद।
मार्क स्टोरी-स्मिथ

क्षमा करें, मैं आपकी अधिक मदद नहीं कर सका, लेकिन मुझे आशा है कि आपको इसमें कुछ उपयोगी लगा।
मैरियन १
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.