2013-05-20 4 views
8

मैं एक समग्र प्रदर्शन परियोजना के हिस्से के रूप में एक तथ्य तालिका लोड को तेज करने की कोशिश कर रहा हूं। तालिका लगभग 120 मिलियन पंक्तियों में लगभग हर शाम 100k जोड़ दी जाती है। तालिका बहुत भारी अनुक्रमित है।फास्ट लोड गंतव्य के साथ टेबल लॉक विकल्प का उपयोग करने के क्या परिणाम हैं?

वर्तमान में मैं एक एसएसआईएस फास्ट लोड ओएलई डीबी गंतव्य का उपयोग कर रहा हूं और 100,000 पंक्तियों को लोड करने में लगभग 15 मिनट लगते हैं। यह 100k पंक्तियों को सम्मिलित करने के लिए वास्तव में मेरे लिए बहुत अधिक लग रहा था, इसलिए मैंने पैकेज को अपने परिणामों को एक स्टेजिंग टेबल में डंप करने के लिए बदल दिया, फिर उस स्टेजिंग तालिका से तथ्य तालिका में एक टी-एसक्यूएल डालने लगा। डालने अब 1 मिनट से भी कम समय में चलता है।

मुझे यह काफी अजीब लगता है कि एसएसआईएस फास्ट लोड की तुलना में एक सादा पुराना टी-एसक्यूएल डालने तेज होगा, इसलिए मैंने ओएलडीडीबी गंतव्य पर कौन से बक्से की जांच की थी। यह पता चला कि टेबल लॉक की जांच नहीं की गई थी। जब मैंने इस विकल्प की जांच की, तो एसएसआईएस लोड अब 1 मिनट से कम है। मेरे प्रश्न हैं:

  • टेबल लॉक को छोड़ने के प्रभाव क्या हैं?
  • क्या टी-एसक्यूएल सम्मिलन कथन डिफ़ॉल्ट रूप से एक टेबल लॉक जारी करता है और यही कारण है कि यह शुरुआत में तेज़ था?

उत्तर

7

ठीक है, मुझे लगता है कि स्पष्टीकरण सीधा है (एक अधिक विस्तृत संदर्भ here देखें):

अपने पहले प्रश्न के लिए:

टेबल ताला - डिफ़ॉल्ट रूप से इस सेटिंग को चेक किया गया है और अनुशंसा इसे तब तक जांचने देना है जब तक कि उसी तालिका का उपयोग किसी भी समय अन्य प्रक्रिया द्वारा किया जा रहा हो। यह निर्दिष्ट करता है कि एक टेबल लॉक को एकाधिक पंक्ति स्तर ताले प्राप्त करने के बजाय गंतव्य तालिका पर अधिग्रहित किया जाएगा, जो लॉक एस्केलेशन समस्याओं में बदल सकता है।

डालने की आवश्यकता वाले बड़ी संख्या में पंक्तियों पर विचार करते हुए सम्मिलित कथन के लिए, तो SQL सर्वर अधिकतर तालिका लॉक बनाने का विकल्प चुनता है।

इसकी पुष्टि करने के लिए आप sys.dm_tran_locks डीएमवी का उपयोग करके तालिका में किस तरह के ताले लगाए जा सकते हैं। परिणामों की व्याख्या करने के लिए यहां कुछ अच्छे नमूने दिए गए हैं (और लॉक एस्केलेशन पर भी अच्छी पढ़ाई): http://aboutsqlserver.com/2012/01/11/locking-in-microsoft-sql-server-part-12-lock-escalation/

+0

आह, इसलिए एकाधिक पंक्ति स्तर ताले धीमेपन की व्याख्या करेंगे। अच्छा है धन्यवाद। – AS2012

+0

@ AS2012: केवल इतना ही नहीं, लेकिन अधिक ताले भी अधिक स्मृति लेते हैं। वहां से जुड़े लेख इस विषय पर बहुत प्रासंगिक और विस्तृत हैं। –

संबंधित मुद्दे