इसलिए मुझे यह कहकर प्रस्तावना दें कि मेरे डीबी डिजाइन पर कुल नियंत्रण नहीं है, इसलिए इस परिदृश्य के उद्देश्यों के लिए वर्तमान प्रणाली के बहुत सारे पहलुओं को नहीं बदला जा सकता है।
डिजाइन के पहलुओं पर पुनर्विचार कैसे करना चाहिए, इसके बारे में टिप्पणियाँ सही होने की संभावना है लेकिन अनहेल्दी :)
मेरे पास एक बहुत बड़ी तालिका है, लगभग 150 फ़ील्ड्स चौड़ी और लगभग 600 m पंक्तियाँ, जो बड़ी संख्या में प्रक्रियाएँ चलाती हैं। यह एक डेटा वेयरहाउस स्थिति में है, इसलिए हमारे पास निर्धारित लोड प्रक्रिया के बाहर कोई अपडेट / आवेषण नहीं है, इसलिए यह भारी अनुक्रमित है।
इस तालिका को विभाजित करने का प्रयास करने के लिए एक निर्णय लिया गया है, और मुझे एक विभाजन तालिका को अनुक्रमित करने के बारे में कुछ चिंताएं हैं। मेरे पास विभाजन के साथ कोई अनुभव नहीं है, इसलिए किसी भी इनपुट या लिंक की सराहना की जाती है। मैं विशेष रूप से यह पता नहीं लगा सका कि मैं BOL या msdn पर क्या हूं।
वर्तमान में हम एक फ़ील्ड पर क्लस्टर करते हैं जिसे हम कॉल करेंगे IncidentKey
जो कि एक varchar(50)
अद्वितीय है और अद्वितीय नहीं है - हम 1-100 रिकॉर्डों के साथ एक ही हो सकते हैं IK
(कोई टिप्पणी नहीं कृपया)। हम अक्सर पुराने IncidentKey
रिकॉर्ड पर नया डेटा प्राप्त करते हैं, इसलिए यह अनुक्रमिक नहीं है।
मैं समझता हूं कि मुझे IncidentDate
विभाजन को सही ढंग से काम करने के लिए अपने संकुल सूचकांक कुंजी में अपने विभाजन क्षेत्र को शामिल करने की आवश्यकता है। मैं सोच रहा हूं कि यह होगा IncidentKey, IncidentDate
।
सवाल यह है कि, विभाजन तालिका में 2 भाग कुंजी पर एक संकुल सूचकांक के मैकेनिक्स कैसे काम करेंगे, यदि "नया" विभाजन में एक रिकॉर्ड क्लस्टर सूचकांक में "पुराने" विभाजन में रिकॉर्ड से पहले होना चाहिए?
उदाहरण के लिए, मेरे पास 5 रिकॉर्ड हैं:
IncidentKey Date
ABC123 1/1/2010
ABC123 7/1/2010
ABC123 1/1/2011
XYZ999 1/1/2010
XYZ999 7/1/2010
अगर मुझे इसके लिए एक नया रिकॉर्ड मिलता है, तो ABC123, 2/1/2011
इसे क्लस्टर इंडेक्स BEFORE में होना चाहिए XYZ999, 1/1/2010
। यह कैसे काम करता है?
मैं विखंडन और संकेत मान रहा हूं, लेकिन मैं दोहरे-भाग कुंजियों के साथ विभाजित तालिकाओं पर गैर-विभाजन वाले संकुल अनुक्रमित भौतिक संग्रहण और कॉन्फ़िगरेशन के बारे में कोई जानकारी नहीं पा सकता हूं।