हमारे डेटाबेस में वर्तमान में केवल एक FileGroup, PRIMARY है, जिसमें लगभग 8GB डेटा (तालिका पंक्तियाँ, अनुक्रमित, पूर्ण-पाठ कैटलॉग) है।
इसे माध्यमिक डेटा फ़ाइलों में विभाजित करने का अच्छा समय कब है? कुछ मापदंड क्या हैं जिनसे मुझे अवगत होना चाहिए?
हमारे डेटाबेस में वर्तमान में केवल एक FileGroup, PRIMARY है, जिसमें लगभग 8GB डेटा (तालिका पंक्तियाँ, अनुक्रमित, पूर्ण-पाठ कैटलॉग) है।
इसे माध्यमिक डेटा फ़ाइलों में विभाजित करने का अच्छा समय कब है? कुछ मापदंड क्या हैं जिनसे मुझे अवगत होना चाहिए?
जवाबों:
इस प्रश्न के दो भाग हैं: जब एक नया FILEGROUP जोड़ना है, और एक फ़ाइल समूह में एक नया फ़ाइल जोड़ना है। पहले बात करते हैं सिद्धांत:
प्राथमिक कारण प्रदर्शन के बारे में मार्क का अधिकार।
दूसरा कारण आपदा वसूली है। SQL Server 2005 और नए के साथ, आप फ़ाइल समूह पुनर्स्थापित कर सकते हैं। जब आपदा आती है, तो आप पहले केवल अपने प्राथमिक फ़ाइल समूह को पुनर्स्थापित कर सकते हैं और प्रश्नों के लिए डेटाबेस को आंशिक रूप से ऑनलाइन ला सकते हैं। जब आप अन्य फ़ाइल समूह को पुनर्स्थापित कर रहे हैं, तो उपयोगकर्ता क्वेरी चला सकते हैं। यह बड़ी मात्रा में ऐतिहासिक डेटा वाले डेटाबेस के लिए उपयोगी है, जिनकी तुरंत आवश्यकता नहीं हो सकती है, या डेटा वेयरहाउस को एक्सेस के लिए ऐतिहासिक डेटा की आवश्यकता के बिना डेटा को वर्तमान तालिकाओं में लोड करने की आवश्यकता होती है।
एक अन्य कारण डेटा के समूहों के पढ़ने / लिखने की रूपरेखा है। यदि आपके पास कुछ डेटा है जो लगातार लिखा जाता है, और अन्य डेटा जिसे भारी रीड गतिविधि मिलती है, तो आप उन जरूरतों को समायोजित करने के लिए विभिन्न प्रकार के स्टोरेज का निर्माण कर सकते हैं। आप भारी-भरकम सामान को छापे 10 पर रख सकते हैं, और 5-छापे गए सामान को सस्ते छापे 5 पर छोड़ सकते हैं।
अब, फाइल बनाम फाइलग्रुप्स पर बात करते हैं। जब आप SQL सर्वर में ऑब्जेक्ट रखते हैं, तो आपको उन्हें फ़ाइलग्रुप स्तर पर रखना होगा। आप किसी फ़ाइल समूह में एक तालिका या एक इंडेक्स ला सकते हैं, लेकिन आप एक विशिष्ट फ़ाइल नहीं चुन सकते हैं। तो अब तक हमने जो कुछ भी चर्चा की है वह एक फ़ाइल समूह को जोड़ने के बारे में है - लेकिन आप एक फ़ाइल कब जोड़ते हैं?
यदि आप संग्रहण डिज़ाइन कर रहे हैं, और आपके पास 80 हार्ड ड्राइव हैं, तो कुछ तरीके हैं जिनसे आप इसे तोड़ सकते हैं:
अलग-अलग स्टोरेज सबसिस्टम में अलग-अलग प्रदर्शन प्रोफ़ाइल हैं। मैंने कुछ SAN के साथ काम किया है जो 12-16 ड्राइव सरणियों के साथ सबसे अच्छा प्रदर्शन करता है, और इससे बड़ा कुछ भी प्रदर्शन सुधार नहीं था। एक अन्य उदाहरण बहुओं के साथ SANs है: यदि आपके पास कई HBA हैं जो आपके सर्वर को आपके स्टोरेज से जोड़ रहे हैं, और यदि आपका मल्टीपॉथिंग सॉफ़्टवेयर वास्तविक सक्रिय / सक्रिय नहीं है, तो आपको लोड वितरित करने के लिए प्रति पथ एक सरणी की आवश्यकता हो सकती है। चार रास्तों, ड्राइव के चार पूलों को उन प्रकार के ड्राइव पर बेहतर प्रदर्शन मिलेगा।
उन मामलों में, आप चार अलग-अलग सरणियों, विंडोज के तहत चार अलग-अलग ड्राइव के साथ समाप्त होते हैं (जब तक कि आप माउंट पॉइंट का उपयोग नहीं करते हैं, और तब भी यह अलग-अलग फ़ोल्डर हैं) और आपको SQL सर्वर में चार अलग-अलग फ़ाइलों की आवश्यकता होगी। वे अलग-अलग फाइलें एक ही फाइलग्रुप में हो सकती हैं।
प्राथमिक कारण प्रदर्शन है। जब आप अपनी प्राथमिक फ़ाइल समूह डिस्क ड्राइव पर IOPS क्षमता से बाहर निकलते हैं, तो आपको भंडारण डिस्क के आधार पर कई डिस्क / LUN पर IOPS को विभाजित करने के लिए दूसरे फ़ाइल समूह पर विस्तार करना होगा।
EDIT: ब्रैड विल्सन ने SSDs के संबंध में एक अच्छी टिप्पणी की। यदि आप एक समग्र एसएसडी / एसएटीए / एफसी भंडारण प्रणाली का उपयोग कर रहे हैं, तो आप विभिन्न प्रकार के भंडारण पर विभिन्न फ़ाइलग्रुप रखना चाह सकते हैं। फिर आप अपने चरम IOPS आवश्यकता तालिकाओं को SSD फाइलग्रोपस पर रख सकते हैं, जबकि इतिहास / आँकड़े तालिकाएँ सस्ते SATA फ़ाइल समूह पर संग्रहीत की जा सकती हैं।
मैं यह भी कहना चाहूंगा कि इस प्रश्न के लिए एक पुनर्प्राप्ति / डेटा उपलब्धता पहलू भी है। एकाधिक फ़ाइल समूहों का उपयोग करके, और प्राथमिक फ़ाइल समूह पर किसी भी उपयोगकर्ता परिभाषित वस्तुओं को नहीं रखने से, आपके पास ऑनलाइन पुनर्स्थापना को सक्षम करने में अधिक लचीलापन होता है। यह फ़ाइल समूह स्तर पर टुकड़ों को पुनर्स्थापित करने की अनुमति देता है।
2005 के बाद से SQL सर्वर के एंटरप्राइज़ और डेवलपर संस्करणों में ऑनलाइन पुनर्स्थापना उपलब्ध है
एक और विचार जो मन में आता है वह है कि केवल स्थैतिक संदर्भ डेटा को ट्रांसेक्शनल डेटा से अलग से पढ़ा जाए। बड़े डेटाबेस के लिए, यह बैकअप करने के लिए आवश्यक समय और / या स्थान को कम कर सकता है।