2009-11-09 16 views

उत्तर

6

बल्क INSERT SQL सर्वर के डेटाबेस इंजन के साथ प्रक्रिया में चलाता है और इस प्रकार क्लाइंट एपीआई की नेटवर्क परत के माध्यम से डेटा पास करने से बचाता है - इससे यह बीसीपी और डीटीएस/एसएसआईएस से तेज़ हो जाता है।

इसके अलावा, बल्क इंसर्ट के साथ, आप डेटा के ऑर्डर बीईडी निर्दिष्ट कर सकते हैं, और यदि यह तालिका के पीके के समान है, तो लॉकिंग पृष्ठ स्तर पर होती है। लेन-देन लॉग के लिए लिखने के साथ-साथ पंक्ति स्तर की बजाय पृष्ठ स्तर पर भी होता है।

नियमित INSERT के मामले में, लॉकिंग और लेनदेन लॉग लिखने एक पंक्ति स्तर पर हैं। इससे एक इंसर्ट स्टेटमेंट की तुलना में बल्क इंसर्ट तेज हो जाता है।

1

कम से कम यह प्रत्येक रिकॉर्ड के लिए एक लेनदेन बनाने और प्रतिबद्ध करने के ऊपरी हिस्से से बच सकता है। अन्य बचतएं होनी चाहिए: उदाहरण के लिए नेटवर्क में डेटा के बड़े हिस्सों को एक समय में एक रिकॉर्ड के बजाय शिपिंग करने में मदद मिलेगी।

फिर, शायद अधिक दिलचस्प बात यह है कि डीबी कार्यान्वयनकर्ता (मुझे नहीं पता कि कोई विशिष्ट विक्रेता वास्तव में ऐसा करता है) चालाक होना शुरू कर देता है - वे रिकॉर्ड्स प्राप्त करने के बजाय रिकॉर्ड के सेट को देख सकते हैं और डेटा के पृष्ठों को पुनर्गठित करने के बजाय एकल रिकॉर्ड को समायोजित करने के लिए नए प्रविष्टियों की अनुमति देने के लिए पृष्ठों के थोक पुनर्गठन कर सकते हैं, इसी प्रकार हम कल्पना कर सकते हैं कि अगर हम जानते हैं कि हम रिकॉर्ड का एक सेट डाल रहे हैं तो शफल सूचकांक अधिक कुशलता से किया जा सकता है।

0

आंतरिक रूप से, यह एक ओएलडीडीबी रिकॉर्डसेट में परिवर्तित हो जाता है, फिर तालिका लोड करता है।

मैंने इसे बहुत सोचा नहीं है, लेकिन मुझे लगता है कि क्लाइंट के बजाय SQL सर्वर बॉक्स पर चलने पर यह तेज़ होता है। इसके अलावा आप उन बाधाओं को प्रबंधित कर सकते हैं जिन्हें आप सामान्य INSERT

From BOL

के साथ नहीं कर सकते
संबंधित मुद्दे