2009-12-09 15 views
9

अनुकूलित करने के लिए युक्तियाँ मेरे पास मध्य आकार का SQL सर्वर 2008 डेटाबेस है जिसमें इसमें वास्तविक डेटा है। इसके लिए सभी उपयोग के मामले केवल पढ़ने के लिए प्रश्न हैं। क्या इस परिदृश्य को देखते हुए मुझे कोई विशेष अनुकूलन माना जाना चाहिए? या क्या मुझे डेटाबेस को अनुकूलित करने के लिए सामान्य नियमों के साथ रहना चाहिए?केवल पढ़ने के लिए एसक्यूएल डेटाबेस

उत्तर

5

यदि यह केवल पढ़ा जाता है, तो आप जो कुछ भी कर सकते हैं वह इंडेक्स को किसी भी चीज पर रख सकता है जो मदद कर सकता है (स्पेस परमिट)। आम तौर पर एक इंडेक्स जोड़ना लिखने के लिए एक प्रदर्शन हिट और पढ़ने के लिए एक प्रदर्शन लाभ के बीच एक व्यापार बंद है। यदि आप लिखने से छुटकारा पा लेते हैं तो यह अब व्यापार-बंद नहीं है।

जब आप डेटाबेस लोड करते हैं तो आप सभी/अधिकांश इंडेक्स को छोड़ना चाहते हैं, लोड करें, फिर इंडेक्स को टेबल पर वापस रखें।

+0

क्यों हैं आप लोड पर सभी/अधिकांश इंडेक्स को छोड़ना चाहते हैं? डेटा लोड करते समय आपको थोड़ा बेहतर प्रदर्शन मिल सकता है, लेकिन आप इंडेक्स को वापस न रखने की संभावना को जोखिम देते हैं। इतना ही नहीं, लेकिन यदि आप इंडेक्स को बंद करते हैं और खराब डेटा लोड करते हैं, तो आप तब तक समस्या नहीं देख पाएंगे जब तक आप इंडेक्स को वहां रखने की कोशिश नहीं करते (यदि आपको याद है)। लोड हो रहा डेटा एक शॉट शॉट है, यह ऐसा कुछ नहीं होता है जो हर समय होता है। यदि इसे सम्मिलित करने में थोड़ा समय लगता है, तो यह एक बड़ा सौदा नहीं है। सार्थक डेटा, अमूल्य है। –

+2

व्लेटर, इंडेक्स को बंद करना और उन्हें पुनर्निर्माण करना लोड करने का एक आम तरीका है, यह चीजों को तेज गति से बढ़ा सकता है। आपको उन्हें वापस रखने के लिए याद रखना नहीं है, यह एसएसआईएस पैकेज का हिस्सा है जो भार करता है। मुझे लगता है कि आप उन पीके और एफके को छोड़ने की सोच रहे हैं जिन्हें आप आमतौर पर नहीं करना चाहते हैं। – HLGEM

+1

जैसा कि एचएलजीईएम ने कहा था, मैं यह नहीं कह रहा था कि आपको पीके/एफके को हटा देना चाहिए (हालांकि कुछ मामलों में भी इसे प्राथमिकता दी जा सकती है)। बहुत सारे डेटा लोड करते समय अंतर जहां कई इंडेक्स शामिल हो सकते हैं, "थोड़ा लंबा" से कहीं अधिक हो सकता है। –

5

मुझे यकीन नहीं है कि आप "सामान्य नियम" पर विचार करते हैं, लेकिन यहां कुछ सुझाव दिए गए हैं।

  • यदि आप 100% निश्चित हैं तो यह केवल पढ़ने के लिए है, आप set the transaction isolation level to READ_UNCOMMITTED कर सकते हैं। यह सबसे तेज़ संभव पठन सेटिंग है, लेकिन यदि आप टेबल पर लिख रहे हैं तो यह प्रेत पढ़ने और गंदे पढ़ने के लिए प्रेरित होगा।

  • यदि आपके पास दृश्य हैं, तो इंडेक्स किए गए दृश्यों का उपयोग करें (उनके लिए क्लस्टर इंडेक्स बनाएं)। चूंकि उन्हें कभी अपडेट नहीं करना पड़ेगा, प्रदर्शन दंड को अस्वीकार कर दिया गया है।

  • Take a look at this article

5

डेटाबेस में:

  1. यह denormalize।
  2. जहां आवश्यक हो वहां अधिक अनुक्रमणिका का उपयोग करें।
  3. यदि आपको अपनी रिपोर्ट में इसकी आवश्यकता है तो कुछ डेटा एकत्र करें।

कार्यक्रम में:

  1. उपयोग पढ़ें अप्रतिबद्ध अलगाव स्तर।
  2. लंबी अवधि के लेन-देन से बचने के लिए ऑटोोकॉमिट का उपयोग करें।
3
  1. डेटा को कम करें।
  2. उचित अनुक्रमणिका लागू करें।
  3. समेकन को पूर्ववत करें।
  4. धारीदार डिस्क के ऊपर डेटाबेस को कार्यान्वित करें।
  5. मैंने इसे कभी नहीं देखा है, लेकिन अगर आप किसी भी तरह से पूरी चीज को मेमोरी (रैम डिस्क ???) में लोड कर सकते हैं जो सुपर फास्ट होगा, है ना?
4

केवल पढ़ने योग्य तालिका के लिए, इंडेक्स को 100% के भरने वाले कारक का उपयोग करने पर विचार करने पर विचार करें।

इससे प्रत्येक डेटा पेज पर डेटा की मात्रा बढ़ जाएगी। प्रति पृष्ठ अधिक डेटा, पढ़ने के लिए कम पृष्ठ, कम I/O, इस प्रकार बेहतर प्रदर्शन।

मुझे यह विकल्प पसंद है क्योंकि यह कोड परिवर्तन या तालिका परिवर्तन के बिना प्रदर्शन में सुधार करता है।

2

प्रदर्शन ट्यूनिंग के लिए आप कई चीजें कर सकते हैं। Denormailzation काम करता है। उचित क्लस्टर इंडेक्स इस बात पर निर्भर करते हैं कि डेटा की पूछताछ कैसे की जाएगी। मैं एक नोलॉक संकेत का उपयोग करने की सलाह नहीं है। मैं स्नैपशॉट अलगाव स्तर का उपयोग करता हूं।

डिस्क पर आपके डेटाबेस को कैसे रखा गया है, यह भी महत्वपूर्ण है। केवल प्रदर्शन को पढ़ने के लिए, मैं अलग-अलग एमडीएफ और एलडीएफ के अलग स्पिंडल के साथ RAID 10 की सिफारिश करता हूं। आम तौर पर, एक उत्पादन डेटाबेस के लिए यह डेटा के लिए RAID 5 और लॉग के लिए RAID 1 होगा। सुनिश्चित करें कि आपके पास प्रत्येक सीपीयू के लिए एक tempdb फ़ाइल है, जो सॉर्टिंग के लिए उपयोग की जाती है, एक अच्छा प्रारंभिक आकार 5 जीबी डेटा और प्रत्येक सीपीयू के लिए 1 जीबी लॉग है। यह भी सुनिश्चित करें कि आप शोप्लान के माध्यम से अपने प्रश्नों या प्रोसेस को चलाने के लिए उन्हें यथासंभव अनुकूलित करने में सहायता करें। सुनिश्चित करें कि सर्वर सेटिंग्स में समांतरता चालू है।

यदि आपके पास इष्टतम प्रदर्शन के लिए समय और स्थान है, तो मैं डिस्क पर डेटा कहां रहता हूं, फ़ाइल समूह बना रहा हूं और उन्हें प्रत्येक वॉल्यूम में अलग-अलग डिस्कों को पूरी तरह से अलग वॉल्यूम पर डाल सकता हूं।

7

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

मानक डीबी अनुकूलन के अलावा:

  1. सुनिश्चित करें कि सभी टेबल बनाने और अनुक्रमित है शून्य विखंडन
  2. पर विचार करें अनुक्रमित कि आप अन्यथा अत्यधिक अद्यतन लागत की वजह से बचा हो सकता है जोड़ने
संबंधित मुद्दे