आप डेटाबेस के लिए लोड परीक्षण और क्षमता नियोजन कैसे करते हैं?


34

यह डेटाबेस के लिए क्षमता योजना के बारे में एक विहित प्रश्न है।

सम्बंधित:

मैं डेटाबेस के लिए उपकरण और क्षमता योजना के तरीकों का एक विहित प्रश्न बनाने के लिए देख रहा हूँ। यह एक विहित प्रश्न होने का इरादा है।

जाहिर है, सामान्य वर्कफ़्लो है:

  • अपने परिदृश्य को जगह दें
  • निगरानी जोड़ें
  • ट्रैफ़िक जोड़ें
  • परिणामों का मूल्यांकन करें
  • परिणामों के आधार पर उपाय
  • कुल्ला, यथोचित रूप से खुश होने तक दोहराएं

कृपया अलग-अलग वेब-सर्वर, फ्रेमवर्क, आदि के लिए विभिन्न उपकरणों और तकनीकों का वर्णन करने के लिए स्वतंत्र महसूस करें, साथ ही साथ सर्वोत्तम-अभ्यास भी।


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

जवाबों:


24

डिस्क और रैम क्षमता योजना

डेटाबेस सर्वर के लिए प्लानिंग डिस्क और मेमोरी क्षमता एक काली कला है। और अधिक बेहतर है। तेजी से बेहतर है।

सामान्य दिशानिर्देशों के अनुसार, मैं निम्नलिखित प्रदान करता हूं:

  • आप कभी भी जरूरत से ज्यादा डिस्क स्थान चाहते हैं ।
    अगले 3-5 वर्षों के लिए आपको कितना डिस्क स्थान चाहिए, इसके बारे में अपना सर्वश्रेष्ठ अनुमान लगा लें, फिर इसे दोगुना करें।
  • आप अपने डेटाबेस इंडेक्स को मेमोरी में रखने के लिए पर्याप्त रैम चाहते हैं, अपनी सबसे बड़ी क्वेरी को कम से कम दो बार संभाल सकते हैं, और अभी भी स्वस्थ ओएस डिस्क कैश के लिए पर्याप्त जगह बची है।
    सूचकांक का आकार आपके डेटाबेस पर निर्भर करता है, और बाकी सब कुछ आपके डेटा सेट और क्वेरी / डेटाबेस संरचना पर निर्भर करता है। मैं एक सुझाव के रूप में "कम से कम 2x आपकी सबसे बड़ी तालिका का आकार" पेश करूंगा, लेकिन ध्यान दें कि यह सुझाव वास्तव में बड़े डेटा वेयरहाउसिंग संचालन पर टूट जाता है जहां सबसे बड़ी तालिका दसियों या सैकड़ों गीगाबाइट हो सकती है।

प्रत्येक डेटाबेस विक्रेता के पास आपकी डिस्क / मेमोरी / ओएस कर्नेल को ट्यून करने के लिए कुछ निर्देश हैं - तैनाती से पहले इस दस्तावेज के साथ कुछ समय बिताएं। इस से मदद मिलेगी।


वर्कलोड बेंचमार्किंग और क्षमता योजना

आप अभी तक तैनात नहीं है मान लिया ...

कई डेटाबेस सिस्टम बेंचमार्किंग टूल के साथ जहाज करते हैं - उदाहरण के लिए, पोस्टग्रेक्यूएल जहाजों के साथ pgBench
ये उपकरण बेंचमार्किंग डेटाबेस प्रदर्शन में आपका पहला पड़ाव होना चाहिए। यदि संभव हो तो आपको डेटाबेस सर्वर के "कितने काम" के लिए एक महसूस करने के लिए सभी नए डेटाबेस सर्वरों पर उन्हें चलाना चाहिए।

अब एक कच्चे बेंचमार्क के साथ सशस्त्र करें जो मानदंड के लिए ABSOLUTELY MEANINGLESSअधिक यथार्थवादी दृष्टिकोण पर विचार करता है: अपने डेटाबेस स्कीमा को लोड करें और एक प्रोग्राम लिखें जो इसे डमी डेटा के साथ पॉप्युलेट करता है, फिर उस डेटा के खिलाफ अपने एप्लिकेशन के प्रश्नों को चलाएं।
यह तीन महत्वपूर्ण बातें निर्धारित करता है: 1. डेटाबेस सर्वर (हार्डवेयर) 2. डेटाबेस सर्वर (सॉफ्टवेयर) 3. आपका डेटाबेस डिजाइन, और यह कैसे (1) और (2) के साथ इंटरैक्ट करता है।

ध्यान दें कि इसके लिए सरल पूर्व-निर्मित बेंचमार्क की तुलना में बहुत अधिक प्रयास की आवश्यकता होती है जैसे pgBench: आपको आबादी करने के लिए कुछ कोड लिखने की आवश्यकता है, और प्रश्नों और रिपोर्ट निष्पादन के समय को करने के लिए आपको कुछ कोड लिखने की आवश्यकता हो सकती है।
इस तरह का परीक्षण भी काफी हद तक सटीक है: चूंकि आप अपने स्कीमा और प्रश्नों के साथ काम कर रहे हैं, आप देख सकते हैं कि वे कैसा प्रदर्शन करेंगे, और यह आपको अपने डेटाबेस / प्रश्नों को प्रोफाइल करने और सुधारने का अवसर प्रदान करता है।

इन बेंचमार्क के परिणाम आपके डेटाबेस का एक आदर्श दृश्य हैं। सुरक्षित मानने के लिए कि आप अपने उत्पादन वातावरण में इस प्रदर्शन का केवल 50-70% प्राप्त करेंगे (बाकी एक तकिया है जो आपको अप्रत्याशित वृद्धि, हार्डवेयर विफलताओं, कार्यभार परिवर्तन आदि को संभालने की अनुमति देगा)।


बहुत देर हो चुकी है! यह उत्पादन में है!

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


चल रही निगरानी

अगर आपका सिस्टम अचानक नया / अलग उपयोग पैटर्न देख रहा है तो दुनिया के सभी बेंचमार्क आपकी मदद नहीं करेंगे।
बेहतर या बदतर डेटाबेस तैनाती के लिए स्थिर नहीं हैं: आपके डेवलपर्स चीजों को बदल देंगे, आपका डेटा सेट बढ़ जाएगा (वे कभी भी सिकुड़ते नहीं लगते), और आपके उपयोगकर्ता किसी भी तरह से उन घटनाओं के पागल संयोजन बनाएंगे जिन्हें आपने परीक्षण में कभी भी भविष्यवाणी नहीं की थी।

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


नोट: यह आपके डेटाबेस हार्डवेयर को आकार देने और यह पता लगा सकता है कि यह कितना दुरुपयोग हो सकता है। यदि आप अभी भी इस बारे में अनिश्चित हैं कि कैसे निर्धारित किया जाए कि कोई विशिष्ट सिस्टम आपकी आवश्यकताओं को पूरा करता है तो आपको डेटाबेस विशेषज्ञ से बात करनी चाहिए।
डेटाबेस प्रबंधन के लिए विशेष रूप से समर्पित एक स्टैक एक्सचेंज साइट भी है: dba.stackexchange.com । उनके प्रश्न संग्रह को खोजें या प्रदर्शन ट्यूनिंग पर आगे की सलाह के लिए अपने डेटाबेस इंजन के लिए विशिष्ट टैग ब्राउज़ करें।


1
इसके अतिरिक्त, आजकल आप SSDs का उपयोग स्वैप / डिस्क संचालन के लिए कर सकते हैं। डिस्क पर बड़े अस्थायी तालिकाओं का उपयोग करने वाले प्रश्नों को गति देगा। इसलिए, अधिक SSDs जोड़ना आम तौर पर एक बहुत अच्छा विचार है।
पीटर

2
@Peter मैं स्वैप स्पेस के लिए SSDs की सिफारिश नहीं करूंगा (यदि आप सक्रिय रूप से स्वैप कर रहे हैं तो बहुत अधिक मंथन दर है), हालांकि एक बड़ा पर्याप्त SSD और अच्छा पहनने के स्तर के साथ डिस्क मशीन के जीवन को बनाए रख सकता है। मैंने SSDs को अच्छे परिणाम के साथ अस्थायी तालिका स्थान के लिए उपयोग किया है।
voretaq7 18

1
कृपया ध्यान दें कि SSD के बारे में टिप्पणियों में यह सलाह अब 7 वर्ष की है। आपके डेटाबेस सर्वर पर डेटाबेस रखने वाले प्रत्येक भंडारण को 2019 या उसके बाद का एसएसडी होना चाहिए।
मार्क हेंडरसन

1

आम तौर पर आपको प्रदर्शन का परीक्षण करने के लिए यथार्थवादी उपयोग के मामलों की आवश्यकता होती है। एप्लिकेशन डेवलपर्स और अंतिम उपयोगकर्ताओं को शामिल करने के लिए एक सर्वोत्तम अभ्यास है।

रिकॉर्ड करें कि वे आम तौर पर क्या कर रहे हैं, प्रत्येक उपयोग-मामले के लिए यह (सामग्री, समवर्ती कार्यों की संख्या) पैरामीयरेज़।

फिर क्लाइंट साइड का निर्माण करें। एक एकल भौतिक मशीन अक्सर उत्पादन भार का निर्माण करने के लिए पर्याप्त नहीं होती है।

फिर इसे अग्नि दें, स्खलित करें, बढ़ाएं और फिर से परीक्षण करें।

आप आश्चर्यचकित होंगे जहां अड़चनें बढ़ती हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.