एक एकल फ़ाइल समूह पर विभाजन


10

मेरे डेटाबेस में कुछ बहुत बड़ी टेबल हैं, लेकिन इस डेटा का एक बड़ा हिस्सा "पुराना" है।

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

मैं इन तालिकाओं को कुछ विभाजनों में विभाजित करने के लिए सोच रहा था, जैसे "नया", "पुराना", "संग्रहीत" और समान। मेरे पास एक "स्थिति" कॉलम है जिसे मैं इस उद्देश्य के लिए उपयोग करना चाहूंगा।

वर्णित परिदृश्य और सीमाओं को देखते हुए, मैं सोच रहा था कि क्या विभाजन यहाँ कोई मतलब है। दूसरे शब्दों में, अगर मेरी तालिका को इस तरह से विभाजित किया जाता है, लेकिन सभी विभाजन एक ही फाइलग्रुप पर बैठते हैं, तो क्या SQL सर्वर उस स्मार्ट क्षेत्र में उस विशेष क्षेत्र को खोजने के लिए पर्याप्त स्मार्ट होगा जहां मेरा "नया" डेटा रहता है और स्पर्श नहीं करता है। "पुराने" डेटा के साथ क्षेत्र?

इसे अलग तरीके से रखने के लिए, यदि, मान लें कि, मेरा 80% डेटा "पुराना" है। क्या SQL सर्वर में 100% अंतर्निहित फ़ाइलों तक पहुँचने और केवल 20% तक पहुँचने से बचने के लिए एक तंत्र है, जिसमें "नया" डेटा है (निश्चित रूप से, मैं WHEREप्रश्नों के खंड में अपने विभाजन कॉलम को निर्दिष्ट करता हूं )।

मुझे लगता है कि इसका जवाब देने के लिए, किसी को यह समझना होगा कि विभाजन को आंतरिक रूप से कैसे लागू किया जाता है। मैं किसी भी संकेत की सराहना करता हूं।

जवाबों:


6

एक ही फाइलग्रुप में एक टेबल को विभाजित करने के दो फायदे हैं:

  1. अधिक कुशल रखरखाव के लिए अनुमति देते हुए, बड़े सूचकांक के कुछ हिस्सों को वृद्धिशील रूप से पुनर्निर्माण किया जाता है। ALTER INDEX [foo] REBUILD PARTITION=nअधिक जानकारी के लिए समीक्षा करें ।
  2. विभाजन का उन्मूलन और (संभवतः) विभाजन स्तर क्वेरी रखरखाव में सुधार के लिए लॉकिंग। मैं अपने ब्लॉग पर इस पर चर्चा करता हूं

यदि आप विभाजन कर रहे हैं तो कई बातों को ध्यान में रखना चाहिए।

  • यदि आपकी तालिका में क्लस्टर इंडेक्स है (और यह वास्तव में होना चाहिए), तो आपकी विभाजन कुंजी क्लस्टर इंडेक्स का हिस्सा होनी चाहिए।
  • प्रदर्शन के मुद्दों से बचने के लिए, आपको अपने विभाजन को संरेखित करना चाहिए। इसका मतलब यह है कि आपके सभी इंडेक्स में आपकी विभाजन कुंजी शामिल होनी चाहिए, चाहे इंडेक्स के हिस्से के रूप में शामिल हो।
  • विभाजन के लिए अनुक्रमणिका पुनर्संरचना SQL सर्वर (2005-2012) के वर्तमान संस्करणों में ऑफ़लाइन हैं। यदि आपके विभाजन बड़े हैं और विभाजन से आपका पुनर्निर्माण हो रहा है, तो इससे अवरुद्ध समस्याएं हो सकती हैं।

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


यदि मैंने क्लस्टर इंडेक्स को विभाजित किया है, तो सभी गैर-क्लस्टर किए गए इंडेक्स में पहले से ही विभाजन लोकेटर को एक पंक्ति लोकेटर के रूप में नहीं रखा गया है?
जीकाटो

0

इसका जवाब है हाँ"। इसमें किसी भी क्वेरी पर एक तंत्र है जो विभाजन को परिभाषित करने के लिए उपयोग किए गए तर्क के आधार पर इनपुट को फ़िल्टर करता है।

आपके पास उपयुक्त फ़िल्टर होना चाहिए, हालांकि, या सभी विभाजन स्कैन किए जाएंगे। इसमें आमतौर पर विभाजन को चुनने के लिए दिनांक फ़िल्टर (आपके मामले में) शामिल होंगे।

इसे लागू करने का एक तरीका यह है कि दृश्य में सही तर्क के साथ केवल एक विभाजन का उपयोग किया जाए।


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