2015-10-06 12 views
8

PostgreSQL क्लस्टर इंडेक्स का समर्थन नहीं करता है, मैं MSSQL सर्वर पर विचार कर रहा हूं। मैंने क्लस्टर और गैर क्लस्टर इंडेक्स की तुलना में article पढ़ा है। लेख का सार यह है कि (पर जोर मेरा) है:क्लस्टरेड इंडेक्स को समझना

गैर क्लस्टर अनुक्रमित दुकान दोनों एक मूल्य और वास्तविक पंक्ति जो वह मान रखती है करने के लिए एक सूचक।

और

क्लस्टर अनुक्रमित क्योंकि तथ्य यह है कि तालिका में पंक्तियों एक ही सटीक क्रम में डिस्क पर जमा हो जाती है की वास्तविक पंक्ति के सूचक के स्टोर करने के लिए की जरूरत नहीं है क्लस्टर सूचकांक

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

प्रश्न: क्लस्टर सूचकांक संरचना क्या है? क्या PosgtreSQLbtree इंडेक्स के लिए tree जैसी संरचना के समान है?

+3

तो तुम PostgreSQL से एमएस एसक्यूएल सर्वर को विस्थापित करने के लिए बस क्लस्टर अनुक्रमित प्राप्त करना चाहते हैं?!? – jarlh

+0

@jarlh बिल्कुल नहीं, मैं बस उस अवधारणा को 'MSSQL' उदाहरण' से कम करने की कोशिश कर रहा हूं। विशेष रूप से, यदि क्लस्टर्ड इंडेक्स केवल भौतिक रूप से डेटा को मापने का मापन करता है (किसी भी तरह), यह स्पष्ट होगा। लेकिन मैं btree संरचना और शारीरिक आदेश के साथ कैसे बांध सकता हूँ। मैं इसे किसी भी तरह से लागू नहीं कर सकता .... –

+0

आपको थोड़ा सा ट्रिपिंग क्यों कर रहा है? विचार है कि डेटा का आदेश दिया जा सकता है, या पंक्ति का डेटा सूचकांक का हिस्सा हो सकता है? –

उत्तर

4

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

क्लस्टर्ड इंडेक्स में इंडेक्स द्वारा उपयोग किए गए प्रत्येक विभाजन के लिए index_id = 1 के साथ sys.partitions में एक पंक्ति है। डिफ़ॉल्ट रूप से, क्लस्टर्ड इंडेक्स में एक विभाजन होता है। जब क्लस्टर्ड इंडेक्स में कई विभाजन होते हैं, तो प्रत्येक विभाजन में बी-पेड़ संरचना होती है जिसमें उस विशिष्ट विभाजन के लिए डेटा होता है। उदाहरण के लिए, यदि क्लस्टर्ड इंडेक्स में चार विभाजन हैं, तो चार बी-पेड़ संरचनाएं हैं; प्रत्येक विभाजन में से एक।

रेफरी के लिए।

https://technet.microsoft.com/en-us/library/ms177443(v=sql.105).aspx http://www.sqlservercentral.com/blogs/practicalsqldba/2013/03/14/sql-server-part-4-explaining-the-non-clustered-index-structure-/

+0

तो, भौतिक रूप से आदेशित तालिका में अतिरिक्त में, हमारे पास इंडेक्स- पंक्तियों (रूट और इंटरमीडिएट-लेवल) भौतिक पंक्ति के लिए चलने वाला actuall द्वारा किया जाता है, है ना? –

+0

तो क्या आप कह रहे हैं कि केवल एक विभाजन वाले क्लस्टर्ड इंडेक्स में बी-ट्री नहीं है? – Brain2000

1

संकुल अनुक्रमणिका में तीन स्तरों

1.Root स्तर

2.Intermediate स्तर

3.Leaf स्तर

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

नीचे चित्र आप संकुल अनुक्रमणिका के बुनियादी समझने में मदद कर सकते हैं:

clustered index

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