SSDs का उपयोग करते समय एक DB डिजाइन में एक संकुल सूचकांक की अवधारणा कामुक है?


44

जब एक एसक्यूएल सर्वर डेटा स्कीमा और बाद में प्रश्नों, sprocs, विचार, आदि को डिजाइन संकुल अनुक्रमणिका और डेटा के आदेश डिस्क पर की धारणा कोई मतलब DB के लिए विचार करने के लिए किए गए डिजाइन पड़ता है स्पष्ट रूप से एसएसडी प्लेटफार्मों पर तैनात किया जाना?

http://msdn.microsoft.com/en-us/library/aa933131(v=sql.80).aspx
"एक संकुल सूचकांक तालिका में डेटा के भौतिक क्रम को निर्धारित करता है।"

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

तो, एक अनुप्रयोग डेटाबेस को डिज़ाइन करने की प्रक्रिया में इस प्लेटफ़ॉर्म के लिए प्रासंगिक क्लस्टर इंडेक्स विचार है?

मेरा प्रारंभिक विचार यह है कि ऐसा इसलिए नहीं है क्योंकि "ऑर्डर किए गए डेटा" का विचार SSDs के भंडारण और पुनर्विक्रेता अनुकूलन के लिए लागू नहीं होता है।

संपादित करें: मुझे पता है कि SQL सर्वर एक बना देगा , मैं सिर्फ इस बारे में दार्शनिक हूं कि क्या यह डिजाइन / अनुकूलन के दौरान इसके बारे में सोचने के लिए समझ में आता है।


जवाबों:


34

अपने आप से एक और प्रश्न पूछें: यदि पूरा डेटाबेस मेमोरी में है और मुझे कभी भी डिस्क को छूना नहीं है, तो क्या मैं अपने डेटा को ऑर्डर किए गए बी-ट्री में स्टोर करना चाहता हूं या क्या मैं अपने डेटा को अनियंत्रित ढेर में स्टोर करना चाहता हूं?

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

दूसरे शब्दों में: सिर्फ इसलिए कि इसे यादृच्छिक क्रम में डिस्क से पढ़ना सस्ता है, इसका मतलब यह नहीं है कि आप 64 जीबी रैम स्कैन बोनान्ज़ा में अपनी टीएलबी और एल 2 लाइनों को कचरा कर सकते हैं ...


मेमोरी में भी बेस हीप में पंक्ति को देखने की लागत, हमेशा की तलाश में पंक्ति को पुनः प्राप्त करने की लागत से अधिक होगी। न केवल मेमोरी एक्सेस के इलाके से, बल्कि इसमें शामिल निर्देशों की सरासर संख्या से भी (लुकअप मूल रूप से एक जॉइन है, जिसमें सभी जॉइन ऑपरेटर मशीनरी शामिल हैं)।
रेमस रूसु

23

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

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


रे @ मट्टू पीके की टिप्पणी।

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

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


13

हाँ, यह अभी भी समझ में आता है। आप अपने दृष्टिकोण में बहुत निचले स्तर पर सोच रहे हैं। SQL सर्वर (एक बहुत ही सरलीकृत स्पष्टीकरण में) एक बी-ट्री वास्तुकला में संकुल डेटा संग्रहीत करता है। यह संकुल अनुक्रमणिका कुंजी मानों के आधार पर तीव्र डेटा पुनर्प्राप्ति के लिए अनुमति देता है।

एक ढेर (कोई संकुलित सूचकांक) में डेटा का क्रमिक क्रम नहीं होता है। यहाँ पर विचार करने के लिए सबसे महत्वपूर्ण बात जो ढेर में है डेटा पेज एक लिंक की गई सूची में नहीं जुड़े हैं

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

संदर्भ: http://msdn.microsoft.com/en-us/library/ms189051.aspx


वहाँ होगा संकुल अनुक्रमणिका हो। मुद्दा यह था कि एसएसडी मंच पर इस मामले पर कोई बात है या नहीं
मैथ्यू

5
हाँ, मामले की तलाश है। 300 रीड के विपरीत 3 पढ़ता है तेजी से कोई फर्क नहीं पड़ता कि आप किस माध्यम का उपयोग कर रहे हैं।
थॉमस स्ट्रिंगर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.