डिस्क और रैम क्षमता योजना
डेटाबेस सर्वर के लिए प्लानिंग डिस्क और मेमोरी क्षमता एक काली कला है। और अधिक बेहतर है। तेजी से बेहतर है।
सामान्य दिशानिर्देशों के अनुसार, मैं निम्नलिखित प्रदान करता हूं:
- आप कभी भी जरूरत से ज्यादा डिस्क स्थान चाहते हैं ।
अगले 3-5 वर्षों के लिए आपको कितना डिस्क स्थान चाहिए, इसके बारे में अपना सर्वश्रेष्ठ अनुमान लगा लें, फिर इसे दोगुना करें।
- आप अपने डेटाबेस इंडेक्स को मेमोरी में रखने के लिए पर्याप्त रैम चाहते हैं, अपनी सबसे बड़ी क्वेरी को कम से कम दो बार संभाल सकते हैं, और अभी भी स्वस्थ ओएस डिस्क कैश के लिए पर्याप्त जगह बची है।
सूचकांक का आकार आपके डेटाबेस पर निर्भर करता है, और बाकी सब कुछ आपके डेटा सेट और क्वेरी / डेटाबेस संरचना पर निर्भर करता है। मैं एक सुझाव के रूप में "कम से कम 2x आपकी सबसे बड़ी तालिका का आकार" पेश करूंगा, लेकिन ध्यान दें कि यह सुझाव वास्तव में बड़े डेटा वेयरहाउसिंग संचालन पर टूट जाता है जहां सबसे बड़ी तालिका दसियों या सैकड़ों गीगाबाइट हो सकती है।
प्रत्येक डेटाबेस विक्रेता के पास आपकी डिस्क / मेमोरी / ओएस कर्नेल को ट्यून करने के लिए कुछ निर्देश हैं - तैनाती से पहले इस दस्तावेज के साथ कुछ समय बिताएं। इस से मदद मिलेगी।
वर्कलोड बेंचमार्किंग और क्षमता योजना
आप अभी तक तैनात नहीं है मान लिया ...
कई डेटाबेस सिस्टम बेंचमार्किंग टूल के साथ जहाज करते हैं - उदाहरण के लिए,
पोस्टग्रेक्यूएल जहाजों के साथ
pgBench ।
ये उपकरण बेंचमार्किंग डेटाबेस प्रदर्शन में आपका पहला पड़ाव होना चाहिए। यदि संभव हो तो आपको डेटाबेस सर्वर के "कितने काम" के लिए एक महसूस करने के लिए सभी नए डेटाबेस सर्वरों पर उन्हें चलाना चाहिए।
अब एक कच्चे बेंचमार्क के साथ सशस्त्र करें जो मानदंड के लिए ABSOLUTELY MEANINGLESS
अधिक यथार्थवादी दृष्टिकोण पर विचार करता है: अपने डेटाबेस स्कीमा को लोड करें और एक प्रोग्राम लिखें जो इसे डमी डेटा के साथ पॉप्युलेट करता है, फिर उस डेटा के खिलाफ अपने एप्लिकेशन के प्रश्नों को चलाएं।
यह तीन महत्वपूर्ण बातें निर्धारित करता है: 1. डेटाबेस सर्वर (हार्डवेयर) 2. डेटाबेस सर्वर (सॉफ्टवेयर) 3. आपका डेटाबेस डिजाइन, और यह कैसे (1) और (2) के साथ इंटरैक्ट करता है।
ध्यान दें कि इसके लिए सरल पूर्व-निर्मित बेंचमार्क की तुलना में बहुत अधिक प्रयास की आवश्यकता होती है जैसे pgBench
: आपको आबादी करने के लिए कुछ कोड लिखने की आवश्यकता है, और प्रश्नों और रिपोर्ट निष्पादन के समय को करने के लिए आपको कुछ कोड लिखने की आवश्यकता हो सकती है।
इस तरह का परीक्षण भी काफी हद तक सटीक है: चूंकि आप अपने स्कीमा और प्रश्नों के साथ काम कर रहे हैं, आप देख सकते हैं कि वे कैसा प्रदर्शन करेंगे, और यह आपको अपने डेटाबेस / प्रश्नों को प्रोफाइल करने और सुधारने का अवसर प्रदान करता है।
इन बेंचमार्क के परिणाम आपके डेटाबेस का एक आदर्श दृश्य हैं। सुरक्षित मानने के लिए कि आप अपने उत्पादन वातावरण में इस प्रदर्शन का केवल 50-70% प्राप्त करेंगे (बाकी एक तकिया है जो आपको अप्रत्याशित वृद्धि, हार्डवेयर विफलताओं, कार्यभार परिवर्तन आदि को संभालने की अनुमति देगा)।
बहुत देर हो चुकी है! यह उत्पादन में है!
एक बार आपके सिस्टम के उत्पादन में "बेंचमार्क" के लिए बहुत देर हो चुकी है - आप क्वेरी लॉगिंग / टाइमिंग को संक्षेप में चालू कर सकते हैं और देख सकते हैं कि चीजों को निष्पादित करने में कितनी देर लगती है, और आप बंद के दौरान बड़े डेटा सेट के खिलाफ कुछ "तनाव परीक्षण" प्रश्न चला सकते हैं। घंटे। आप सिस्टम के सीपीयू, रैम और आई / ओ (डिस्क बैंडविड्थ) उपयोग पर भी विचार कर सकते हैं कि यह कितना भारी लोड है।
दुर्भाग्य से ये सभी चीजें आपको इस बात का अंदाजा लगाती हैं कि सिस्टम क्या कर रहा है, और संतृप्ति कितनी करीब है, इसकी अस्पष्ट अवधारणा है।
यह हमें लाता है ...
चल रही निगरानी
अगर आपका सिस्टम अचानक नया / अलग उपयोग पैटर्न देख रहा है तो दुनिया के सभी बेंचमार्क आपकी मदद नहीं करेंगे।
बेहतर या बदतर डेटाबेस तैनाती के लिए स्थिर नहीं हैं: आपके डेवलपर्स चीजों को बदल देंगे, आपका डेटा सेट बढ़ जाएगा (वे कभी भी सिकुड़ते नहीं लगते), और आपके उपयोगकर्ता किसी भी तरह से उन घटनाओं के पागल संयोजन बनाएंगे जिन्हें आपने परीक्षण में कभी भी भविष्यवाणी नहीं की थी।
अपने डेटाबेस के लिए उचित क्षमता नियोजन करने के लिए आपको कुछ प्रकार के प्रदर्शन की निगरानी को लागू करने की आवश्यकता होगी ताकि आप यह सुनिश्चित कर सकें कि डेटाबेस प्रदर्शन अब आपकी अपेक्षाओं को पूरा नहीं कर रहा है। उस बिंदु पर आप उपचारात्मक क्रियाओं पर विचार कर सकते हैं (नए हार्डवेयर, DB स्कीमा या क्वेरी परिवर्तन संसाधन उपयोग, आदि का अनुकूलन करने के लिए)।
नोट: यह आपके डेटाबेस हार्डवेयर को आकार देने और यह पता लगा सकता है कि यह कितना दुरुपयोग हो सकता है। यदि आप अभी भी इस बारे में अनिश्चित हैं कि कैसे निर्धारित किया जाए कि कोई विशिष्ट सिस्टम आपकी आवश्यकताओं को पूरा करता है तो आपको डेटाबेस विशेषज्ञ से बात करनी चाहिए।
डेटाबेस प्रबंधन के लिए विशेष रूप से समर्पित एक स्टैक एक्सचेंज साइट भी है: dba.stackexchange.com । उनके प्रश्न संग्रह को खोजें या प्रदर्शन ट्यूनिंग पर आगे की सलाह के लिए अपने डेटाबेस इंजन के लिए विशिष्ट टैग ब्राउज़ करें।