मैं एक डेटाबेस बना रहा हूं जिसमें लगभग 30 टेबल होंगे, जिसमें हर टेबल पर लाखों पंक्तियाँ और प्रत्येक टेबल में एक ही महत्वपूर्ण कॉलम और एक प्राथमिक / विदेशी कुंजी कॉलम होगा, जिसमें भारी होने की सूरत में क्वेरी दक्षता को अधिकतम किया जाएगा। अद्यतन और सम्मिलन और संकुल अनुक्रमित का भारी उपयोग करते हैं। टेबलों में से दो में परिवर्तनशील-लंबाई वाले पाठात्मक डेटा होंगे, जिनमें से एक में सैकड़ों लाखों पंक्तियाँ होंगी लेकिन बाकी में केवल संख्यात्मक डेटा होगा।
जैसा कि मैं वास्तव में मेरे द्वारा उपलब्ध हार्डवेयर के प्रदर्शन के हर अंतिम ड्रॉप को निचोड़ना चाहता हूं (लगभग 64 जीबी रैम, एक बहुत तेज एसएसडी और 16 कोर), मैं प्रत्येक टेबल को अपनी फाइल रखने की अनुमति देने के बारे में सोच रहा था ताकि कोई फर्क न पड़े मैं 2, 3, 4, 5 या अधिक तालिकाओं में शामिल हो रहा हूं, प्रत्येक तालिका को हमेशा एक अलग थ्रेड का उपयोग करके पढ़ा जाएगा और प्रत्येक फ़ाइल की संरचना को तालिका की सामग्री के साथ निकटता से जोड़ा जाएगा, जो उम्मीद है कि विखंडन को कम करेगा और इसे तेज करेगा SQL सर्वर के लिए किसी भी दी गई तालिका की सामग्री को जोड़ने के लिए।
एक चेतावनी, मैं SQL Server 2008 R2 वेब संस्करण पर अटका हुआ हूं । जिसका अर्थ है कि मैं स्वचालित क्षैतिज विभाजन का उपयोग नहीं कर सकता, जो एक प्रदर्शन वृद्धि के रूप में नियम करता है।
क्या वास्तव में प्रदर्शन को अधिकतम करने के लिए प्रति तालिका एक फ़ाइल का उपयोग किया जाएगा, या क्या मैं अंतर्निहित SQL सर्वर इंजन विशेषताओं को अनदेखा कर रहा हूं जो इतना अनावश्यक कर देगा?
दूसरा, यदि प्रति तालिका एक फ़ाइल का उपयोग करना लाभप्रद है, create table
तो मुझे केवल एक फ़ाइल समूह को तालिका आवंटित करने का विकल्प क्यों देना है और किसी विशिष्ट तार्किक फ़ाइल को नहीं? इससे मुझे अपने परिदृश्य में प्रत्येक फ़ाइल के लिए एक अलग फ़ाइल समूह बनाने की आवश्यकता होगी, जो मुझे सुझाव देता है कि शायद SQL सर्वर उन लाभों की कल्पना नहीं कर रहा है जो मैं मान रहा हूं कि मैं जो प्रस्ताव कर रहा हूं उससे आ जाएगा।