/ / इस डेटाबेस को कैसे डिजाइन करें? - एसक्यूएल-सर्वर, डेटाबेस-डिजाइन

इस डेटाबेस को कैसे डिजाइन करें? - एसक्यूएल-सर्वर, डेटाबेस-डिजाइन

मुझे लॉग डेटा स्टोर करने के लिए डेटाबेस डिज़ाइन करना है लेकिनमुझे पहले अनुभव नहीं है। मेरी तालिका में लगभग 1 9 कॉलम हैं (लगभग 500 बाइट प्रत्येक पंक्ति) और दैनिक 30,000 नई पंक्तियों तक बढ़ता है। मेरा ऐप इस तालिका को फिर से प्रभावी ढंग से पूछने में सक्षम होना चाहिए।

मैं एसक्यूएल सर्वर 2005 का उपयोग कर रहा हूँ।

मैं इस डेटाबेस को कैसे डिजाइन कर सकता हूं?

संपादित करें: मैं जिस डेटा को स्टोर करना चाहता हूं वह बहुत प्रकार है: डेटाटाइम, स्ट्रिंग, शॉर्ट एंड इंट। कुल कोशिकाओं में कुल 25% हैं :)

उत्तर:

उत्तर № 1 के लिए 1

हालांकि आप "लुकअप टेबल, लुकअप टेबल करेंगेलगभग निश्चित रूप से एक टाइमस्टैम्प कॉलम होगा। आप आवेषण को प्रभावी रखने के लिए पहले उस टाइमस्टैम्प पर क्लस्टर करना चाहते हैं। इसका मतलब यह भी हो सकता है कि आप हमेशा अपने प्रश्नों को विशिष्ट दिनांक सीमाओं तक सीमित कर दें, ताकि आपके क्लस्टर इंडेक्स पर चयनकता अच्छी हो।

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


जवाब के लिए 0 № 2

खैर, विवरण दिया गया है जिसे आपने सभी प्रदान किया हैआप वास्तव में यह सुनिश्चित कर सकते हैं कि आपका डेटा सामान्यीकृत हो और आपके 1 9 कॉलम आपको "स्पैस" टेबल पर ले जाएं (जिसका अर्थ है कि उन स्तंभों की एक बड़ी संख्या शून्य है)।

यदि आप कुछ और डेटा (अपनी मौजूदा स्कीमा और कुछ नमूना डेटा, शायद) जोड़ना चाहते हैं तो मैं अधिक विशिष्ट सलाह प्रदान कर सकता हूं।


जवाब के लिए 0 № 3

प्रत्येक कॉलम पर एक इंडेक्स फेंको जिसे आप पूछेंगे।

परीक्षण डेटा की बड़ी मात्रा, और निष्पादन योजना (क्वेरी विश्लेषक के साथ) यहां आपका मित्र हैं।


जवाब के लिए 0 № 4

स्पैस टेबल पर टिप्पणी के अलावा, आपको उन स्तंभों पर तालिका को इंडेक्स करना चाहिए जिन्हें आप क्वेरी करना चाहते हैं।

वैकल्पिक रूप से, आप प्रोफाइलर का उपयोग करके इसका परीक्षण कर सकते हैं और देख सकते हैं कि प्रोफाइलर वास्तविक उपयोग के आधार पर अनुक्रमण के संदर्भ में क्या सुझाव देता है।


जवाब के लिए 0 № 5

कुछ अनुकूलन जो आप कर सकते हैं:

  1. सबसे अधिक संभावित लुक-अप मानदंडों के आधार पर अपना डेटा क्लस्टर करें (उदाहरण के लिए प्रत्येक पंक्ति के निर्माण तिथि-समय पर क्लस्टर प्राथमिक कुंजी इस प्रकृति के बहुत तेज़ी से दिखती है)।
  2. यह मानते हुए कि पंक्तियां एक समय में लिखी जाती हैं (नहींबैच में) और यह कि प्रत्येक पंक्ति डाली गई है लेकिन कभी अपडेट नहीं की गई है, आप "चयन (NOLOCK)" विकल्प का उपयोग करने के लिए सभी चयन कथन कोड कर सकते हैं। यदि आपके पास कई पाठक हैं, तो आप बड़े पैमाने पर प्रदर्शन सुधार प्रदान करेंगे क्योंकि आप "लॉक सिस्टम को पूरी तरह से बाईपास कर रहे हैं। तालिका की संरचना के कारण अमान्य डेटा पढ़ने का जोखिम बहुत कम हो गया है।

यदि आप अपनी टेबल परिभाषा पोस्ट करने में सक्षम हैं तो मैं अधिक सलाह दे सकता हूं।