अस्थायी तालिकाओं में डेटा लोड करते समय न्यूनतम लॉगिंग प्राप्त करें


10

द डेटा लोडिंग परफॉरमेंस गाइड को पढ़ने के बाद भी , मैं अभी भी अनिश्चित हूं कि यदि आवश्यक हो तो TABLOCK टेबल संकेत को एक खाली अस्थायी तालिका में जोड़ने के लिए, न्यूनतम लॉगिंग प्राप्त करने के लिए क्लस्टर इंडेक्स के साथ परिभाषित किया गया है।

स्पष्ट रूप से टेम्पप टेबल टेम्पेडी में बनाई गई है जो सिमप्ले रिकवरी मोड में चल रही है इसलिए मैंने सोचा होगा कि यह न्यूनतम लॉगिंग के लिए एक आदर्श उम्मीदवार था, हालांकि मैं इसकी पुष्टि करने के लिए एक मार्ग नहीं ढूंढ सकता।

अस्थायी तालिका न्यूनतम लॉगिंग के लिए एक उम्मीदवार है, और यदि ऐसा है तो स्थायी तालिका के लिए अनुशंसित TABLOCK संकेत को जोड़ने के लायक है?

जवाबों:


18

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

नहीं, स्थानीय अस्थायी टेबल ( #temp) निर्माण सत्र के लिए निजी हैं , इसलिए टेबल लॉक संकेत की आवश्यकता नहीं है। वैश्विक अस्थायी तालिका ( ##temp) या एक नियमित तालिका ( dbo.temp) के लिए टेबल लॉक संकेत की आवश्यकता होगी tempdb, क्योंकि इन्हें कई सत्रों से एक्सेस किया जा सकता है।

ध्यान दें कि यहां तक ​​कि जहां पूर्ण न्यूनतम लॉगिंग ऑप्टिमाइज़ेशन लागू नहीं होते हैं, tempdbअन्य ऑप्टिमाइज़ेशन से लाभ में बनाई गई तालिकाओं जैसे लॉग REDOजानकारी की आवश्यकता नहीं है । आप यह देखने के लिए परीक्षण कर सकते हैं कि क्या पंक्तियों या पृष्ठों को अनिर्दिष्ट का उपयोग करके लॉग किया जा रहा है sys.fn_dblog। रेगुलर लॉगिंग में रो-लॉग रिकॉर्ड जैसे फीचर होंगे LOP_INSERT_ROWS


ध्यान दें कि SQL Server 2016 में प्रश्नों के TABLOCKसाथ समानांतर निष्पादन प्राप्त करने के लिए स्थानीय अस्थायी तालिका में जोड़ना आवश्यक है INSERT...SELECT, Microsoft नॉलेज बेस आलेख देखें:

जब आप INSERT चलाते हैं, तो खराब प्रदर्शन। SQL सर्वर 2016 में संचालन का चयन करें

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