क्या सूचकांक को संरेखित नहीं करने का एक फायदा है?


9

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

वहाँ कोई कारण नहीं है विभाजन करने के लिए SQL Server 2008 पर एक अनुक्रमणिका संरेखित करें?


1
संभवतः। यह देखने के लिए कि क्या सूचकांक का उपयोग किया जा रहा है, अपने सूचकांक आँकड़ों का उपयोग करें। यदि ऐसा है, तो उस इंडेक्स पर कौन सी क्वेरी चल रही है, इसे कैप्चर करने के लिए विस्तारित ईवेंट या सर्वर साइड ट्रेस का उपयोग करें। यदि वे एक विभाजन संरेखित सूचकांक पर बेहतर प्रदर्शन करेंगे, तो महान। यदि नहीं, तो यह देखने के लिए जांचें कि क्या उन्हें वास्तव में गैर-विभाजित विभाजन अनुक्रमित की आवश्यकता है। यदि वे नहीं करते हैं, तो मैं कहूंगा कि भविष्य के प्रश्नों का लाभ उठाते हुए इसे विभाजन को संरेखित कर सकते हैं। बेशक, अगर लागत / प्रयास / आउटेज बहुत अधिक है, तो नहीं।
अली रज़ेगी

विभाजन तालिका को अनुक्रमित करने के लिए मैंने जो सबसे अच्छा अभ्यास पढ़ा है, उसमें से विभाजन योजना के साथ सूचकांक को संरेखित करना है। यह विशेष तालिका मुझे यह सोचकर मिली कि मैं विभाजन योजना के साथ एक सूचकांक संरेखित नहीं करने के लिए एक उपयोग के मामले को समझना चाहता हूं। मैं एक विशेष समस्या को हल करने की कोशिश नहीं कर रहा हूं, इसलिए मेरे पास कोई क्वेरी नहीं है जिसका विश्लेषण करने की आवश्यकता है।
रॉबिन

एक गैर-संरेखित सूचकांक डिजाइन करने का एक अन्य कारण एक अद्वितीय सूचकांक (प्राथमिक कुंजी या अद्वितीय बाधा सहित) है जिसमें विभाजन कॉलम शामिल नहीं है। इस स्थिति में, इंडेक्स को बिल्कुल विभाजित नहीं किया जाना चाहिए या एक अलग फ़ंक्शन / योजना का उपयोग करके विभाजन नहीं किया जाना चाहिए।
Dan Guzman

जवाबों:


11

आप विभाजित आधार वस्तु पर एक (गैर अद्वितीय) सूचकांक विभाजन नहीं का मुख्य लाभ यह है कि यह एक के आसपास काम करता है लंबे समय से चली क्वेरी अनुकूलक सीमा जैसे आदेश दिया डेटा अनुरोधों से संबंधित MIN, MAXया TOP (n)प्रश्नों।

आप विभाजित सूचकांक पर, अनुकूलक आम तौर पर अनुवाद नहीं कर सकता MIN, MAXया TOP (n)एक ही आपरेशन करने के लिए विभाजन प्रति , प्रति-विभाजन आंशिक समुच्चय पर अंतिम वैश्विक सकल द्वारा पीछा किया। इसके बजाय अनुकूलक एक निष्पादन योजना चुनता है जो सूचकांक के सभी विभाजन को स्कैन करता है। इसका अपवाद एकल मामला है जहां विभाजन कॉलम पर कुल या शीर्ष संचालन निर्दिष्ट किया गया है।

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


इत्ज़िक बेन-गण द्वारा लेख इस मुद्दे को समझाते हुए।


3

गुटनिरपेक्ष सूचकांक की आवश्यकता वाले कुछ बाधाओं (जैसे अद्वितीय) के आसपास स्पष्ट मुद्दा है ।

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


1
हाँ। एक गैर-संरेखित सूचकांक चुनना एक बहुत ही सूचित विकल्प होना चाहिए। मैंने इसे खुद (शायद ही कभी) अतीत में किया है, लेकिन बहुत विशिष्ट परिस्थितियों में जहां लाभ ने लागतों को पछाड़ दिया है।
पॉल व्हाइट 9

2

गैर-संरेखित सूचकांक विभाजन के प्राथमिक लाभ को नकारते हैं जो विभाजन को स्विच कर रहा है। यदि आप उस पर निर्भर नहीं होते हैं और अन्य कारणों (अलग-अलग भंडारण, रीड-ओनली विभाजन, वृद्धिशील आँकड़े, ...) के लिए विभाजन कर रहे हैं, तो आगे बढ़ें और गैर-संरेखित इंडेक्स बनाएं।

गैर-संरेखित अनुक्रमणिका उपयोगी हैं क्योंकि आप उनके साथ संपूर्ण तालिका पर अद्वितीय बाधाओं को लागू कर सकते हैं। इसके अलावा, गैर-संरेखित अनुक्रमितों को विभाजन कुंजी की आवश्यकता नहीं है जो एक अंतर्निहित तलाश उपसर्ग है। 10000 विभाजन होने की कल्पना करें और विभाजन कुंजी के आधार पर क्वेरी न करें। यदि अनुक्रमणिका संरेखित की गई थी, तो निष्पादन योजना को 10000 विभाजन की तलाश करनी होगी। अन्य उत्तरों के आगे के उदाहरण हैं।

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