हमारे पास एक डेटाबेस है जिसमें सभी पीके GUID हैं, और अधिकांश पीके तालिका के लिए क्लस्टर्ड इंडेक्स भी हैं। हम जानते हैं कि यह बुरा है (GUID की यादृच्छिक प्रकृति के कारण)। इसलिए, ऐसा लगता है कि यहां मूल रूप से दो विकल्प हैं (पीयूएस के रूप में GUID को फेंकने से कम, जो हम नहीं कर सकते (कम से कम इस समय नहीं))।क्लस्टरर्ड GUID PKs के साथ SQL सर्वर डेटाबेस - क्लस्टरर्ड इंडेक्स स्विच करें या अनुक्रमिक (कंघी) GUID पर स्विच करें?
- हम GUID पीढ़ी एल्गोरिदम को उदा। एनएचबीर्नेट का उपयोग करता है, जैसा कि this post, या
- में विस्तृत किया गया है, हम सबसे भारी उपयोग के तहत तालिकाओं के लिए, एक अलग क्लस्टर्ड इंडेक्स में बदल सकते हैं, उदाहरण के लिए एक पहचान कॉलम, और "यादृच्छिक" GUID को पीके के रूप में रखें।
क्या इस तरह के परिदृश्य में कोई सामान्य सिफारिशें देना संभव है?
प्रश्न में आवेदन 500+ टेबल है, वर्तमान में लगभग 1,5 मिलियन पंक्तियों में सबसे बड़ा, 500 000 पंक्तियों के आसपास कुछ टेबल, और शेष काफी कम (उनमें से अधिकतर 10 के नीचे) हैं।
इसके अलावा, एप्लिकेशन पहले से ही कई ग्राहक साइटों पर स्थापित है, इसलिए हमें मौजूदा ग्राहक के लिए किसी भी संभावित नकारात्मक प्रभाव को लेना होगा।
धन्यवाद!
आपके उत्तर के लिए धन्यवाद। बस एक त्वरित टिप्पणी/स्पष्टीकरण: मुझे GUID की अनुमानितता की परवाह नहीं है, केवल प्रतिष्ठानों में उनकी विशिष्टता। – Eyvind
फिर SQL सर्वर में NEWSEQUENTIALID() जैसे अनुक्रमिक मार्गदर्शिकाओं में अपने guids को बदलने से आपकी अधिकांश तत्काल समस्याएं हल हो जाएंगी। हालांकि, किसी भी पहचान में एक पूर्ण पुन: कारक को अपने आप से अधिक समय तक नहीं डालें। –
इसलिए, हमने अनुक्रमिक GUID का चयन किया: कई तालिकाओं में 100K पंक्तियों वाले ग्राहकों के बारे में क्या - क्या इस तरह के बदलाव से उन्हें फायदा होगा, या स्थिति आज जितनी खराब होगी, क्योंकि तालिकाएं और अनुक्रमणिका पहले से ही हैं "यादृच्छिक" डेटा से भरा है? – Eyvind