कॉलमस्टोर इंडेक्स की शारीरिक रचना क्या है?


20

SQL Server 2012 कोडनाम में नई सुविधाओं में Denaliसे एक Columnstore इंडेक्स है।

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

मैं कठिनाई पर किसी भी अच्छा जानकारी प्राप्त हो रही है आंतरिक एक columnstore सूचकांक की।

  • यह कैसे संरचित है?
  • क्या कोई बी-ट्री है? जगह में कुछ अन्य संरचना?
  • डेटा को कैसे व्यवस्थित किया जाता है?
  • किस प्रकार के विशिष्ट ऑपरेटर इसका उपयोग करने के लिए सबसे उपयुक्त हैं?
  • किसी भी अन्य विरोधी पैटर्न का उपयोग करते समय उनसे बचा जाना चाहिए?

जो कुछ मैं उनके बारे में पता लगा सकता हूं, वे मूल रूप से एक "सामान्य" सूचकांक के बिल्कुल विपरीत हैं, अर्थात चाबियों का क्रम नहीं, कोई शामिल फ़ील्ड नहीं, केवल अस्पष्ट।

किसी भी अंतर्दृष्टि की सराहना की जाती है।


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

यह वास्तव में कई कॉलम के लिए है। इसके अलावा, मैं अन्य एसएस कार्यान्वयनों के साथ यह मान रहा हूँ कि यह अन्य उत्पादों की तुलना में थोड़ा अलग होगा
JNK

MySQL के लिए लेकिन वही लागू होता है: developer.bazaarvoice.com/why-columns-are-cool इसके अलावा Sybase IQ का ग्रैंड डैडी है
gbn

3
@ConcernedOfTunbridgeWells - क्या कॉलमस्टोर इंडेक्स बिटमैप इंडेक्स का उपयोग करते हैं? सं। कॉलम अनुक्रमणिका वर्टिपैक के आधार पर एक मालिकाना डेटा प्रतिनिधित्व का उपयोग करती है। यह बिटमैप इंडेक्स के समान नहीं है और यह एक का उपयोग नहीं करता है। लेकिन बिटमैप इंडेक्स के लिए इसके समान लाभ हैं, जैसे कि स्तंभ पर फ़िल्टर करने में लगने वाले समय को कम करके अलग-अलग मानों के साथ।
मार्टिन स्मिथ

1
Microsoft में टीम के एक सदस्य रेमस रुसानु ने इस सुविधा को विकसित किया, बस इस पर एक टुकड़ा पोस्ट किया: SQL सर्वर 2012 COLUMNSTORE इंडेक्स के अंदर
निक चामास

जवाबों:


22

स्तंभ की संरचना

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

क्वेरी निष्पादन के दौरान डिक्शनरी को स्मृति में पिन किया जाता है , जब भी निष्पादन में वास्तविक डेटा मूल्य की आवश्यकता होती है, तब खंड में डेटा मूल्य आईडी को डिक्शनरी में देखा जाता है (यह लुकअप प्रदर्शन कारणों से यथासंभव लंबे समय के लिए टाल दिया जाता है)।

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

विशिष्ट योजना संचालक

SQL सर्वर 2012 बैच मोड नामक एक नया निष्पादन मोड का परिचय देता है। इस मोड में, ऑपरेटरों के बीच लगभग 1000 पंक्तियों के पैकेट पारित किए जाते हैं, जो प्रोसेसर उपयोग दक्षता में काफी सुधार करते हैं। प्रत्येक पैकेट के भीतर, स्तंभ डेटा को वेक्टर के रूप में दर्शाया जाता है। सभी योजना ऑपरेटर बैच मोड ऑपरेशन का समर्थन नहीं करते हैं, लेकिन उन लोगों के उदाहरण हैं जिनमें कॉलमइनस्टोर इंडेक्स स्कैन, हैश इनर जॉइन, बैच हैश टेबल बिल्ड, बिटमैप फ़िल्टर, हैश एग्रीगेट ( स्केलर एग्रीगेट्स नहीं ), फ़िल्टर और कंपैक्टर स्केलर (प्रक्षेपण और अभिव्यक्ति के लिए) शामिल हैं। मूल्यांकन)। अनुमानित और वास्तविक निष्पादन मोड दिखाने के लिए क्वेरी निष्पादन योजनाओं को बढ़ाया गया है।

विरोधी पैटर्न

पहली रिलीज़ में बड़ी संख्या में प्रतिबंध हैं, जिसमें स्वीकार्य डेटा प्रकारों पर बाधाएं शामिल हैं । अधिकांश सामान्य प्रकार समर्थित हैं; असमर्थित डेटा प्रकार में शामिल DECIMAL18 अंकों, की तुलना में एक अधिक से अधिक परिशुद्धता के साथ (N)VARCHAR(MAX), UNIQUEIDENTIFIER, CLR प्रकार, और (VAR)BINARY

उपयोग की स्ट्रिंग प्रकार , OUTER JOIN, IN,EXISTS , NOT IN, OR, UNION ALLमें काफी कम प्रदर्शन (पंक्ति मोड निष्पादन) हो सकता है, जब तक समाधान कार्यरत हैं के रूप में इस खंड में लिंक किए गए लेखों में दिखाया गया है कि आम तौर पर असामान्य वाक्य रचना पुनर्लेखन शामिल है।

अधिक जानकारी

रेमस रुसानु ने यहां एक महान अवलोकन का ब्लॉग किया है

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