एक InnoDB बफर पूल क्या है?
InnoDB बफर पूल मेमोरी स्पेस है जिसमें InnoDB, बफ़र्स, कैशे, इंडेक्स और यहां तक कि रो-डेटा की कई इन-मेमोरी डेटा संरचनाएं होती हैं। innodb_buffer_pool_size MySQL कॉन्फ़िगरेशन पैरामीटर है जो MySQL द्वारा InnoDB बफर पूल को आवंटित मेमोरी की मात्रा को निर्दिष्ट करता है। यह MySQL होस्टिंग कॉन्फ़िगरेशन में सबसे महत्वपूर्ण सेटिंग्स में से एक है और इसे उपलब्ध सिस्टम RAM के आधार पर कॉन्फ़िगर किया जाना चाहिए।
इस पोस्ट में, हम आपके InnoDB बफर पूल साइज वैल्यू को सेट करने के दो तरीकों के बारे में बताएंगे, उन प्रथाओं के पेशेवरों और विपक्षों की जांच करेंगे, और एक अनूठी विधि भी प्रस्तावित करेंगे। अपने सिस्टम RAM के आकार के आधार पर इष्टतम मान पर पहुंचें।
दृष्टिकोण 1. अंगूठे की विधि का नियम
इस मान को सिस्टम RAM के 70% - 80% पर सेट करने के लिए सबसे अधिक पालन किया जाने वाला अभ्यास है। हालांकि यह ज्यादातर मामलों में अच्छी तरह से काम करता है, यह विधि सभी कॉन्फ़िगरेशन में इष्टतम नहीं हो सकती है। आइए 192GB RAM वाले सिस्टम का उदाहरण लेते हैं। उपरोक्त विधि के आधार पर, हम बफर पूल आकार के लिए लगभग 150GB पर पहुंचते हैं। हालाँकि, यह वास्तव में एक इष्टतम संख्या नहीं है क्योंकि यह सिस्टम में उपलब्ध बड़े RAM आकार का पूरी तरह से लाभ नहीं उठाता है, और लगभग 40GB मेमोरी को पीछे छोड़ देता है। यह अंतर और भी महत्वपूर्ण हो सकता है क्योंकि हम बड़े कॉन्फ़िगरेशन वाले सिस्टम में जाते हैं जहां हमें उपलब्ध रैम का अधिक से अधिक उपयोग करना चाहिए।
दृष्टिकोण 2. अधिक सूक्ष्म दृष्टिकोण
यह दृष्टिकोण InnoDB बफर पूल के आंतरिक भाग और इसके इंटरैक्शन की अधिक विस्तृत समझ पर आधारित है, जिसका वर्णन उच्च प्रदर्शन MySQL पुस्तक में बहुत अच्छी तरह से किया गया है।
आइए इनो डीबी बफर पूल आकार की गणना करने के लिए निम्नलिखित विधि को देखें।
- उपलब्ध कुल RAM से प्रारंभ करें।
- OS की ज़रूरतों के लिए उपयुक्त राशि घटाएँ।
- सभी MySQL जरूरतों के लिए उपयुक्त राशि घटाएं (जैसे विभिन्न MySQL बफर, अस्थायी टेबल, कनेक्शन पूल, और प्रतिकृति संबंधित बफर)।
- परिणाम को 105% से विभाजित करें, जो कि बफर पूल को प्रबंधित करने के लिए आवश्यक ओवरहेड का एक अनुमान है।
उदाहरण के लिए, आइए 192GB RAM वाले सिस्टम को केवल InnoDB का उपयोग करके देखें और कुल लॉग फ़ाइल का आकार लगभग 4GB है। हम ओएस के लिए 'अधिकतम 2GB या कुल RAM का 5%' जैसे नियम का उपयोग कर सकते हैं, जैसा कि उपरोक्त पुस्तक में अनुशंसित है, जो लगभग 9.6GB है। फिर, हम मुख्य रूप से लॉग फ़ाइल के आकार को ध्यान में रखते हुए, अन्य MySQL जरूरतों के लिए लगभग 4GB आवंटित करेंगे। इस विधि का परिणाम हमारे InnoDB बफर पूल आकार के लिए लगभग 170GB है, जो उपलब्ध RAM आकार का लगभग 88.5% उपयोग है।
यद्यपि हमने ऊपर OS आवश्यकताओं के लिए हमारे मेमोरी आवंटन की गणना करने के लिए 'अधिकतम 2GB या कुल RAM का 5%' नियम का उपयोग किया है, वही नियम सभी मामलों में बहुत अच्छी तरह से काम नहीं करता है , विशेष रूप से 2GB और 32GB के बीच मध्यम आकार के RAM वाले सिस्टम के लिए। उदाहरण के लिए, 3GB RAM वाले सिस्टम में, OS की ज़रूरतों के लिए 2GB आवंटित करना InnoDB बफर पूल के लिए बहुत कुछ नहीं छोड़ता है, जबकि 5% RAM आवंटित करना हमारी OS ज़रूरतों के लिए बहुत कम है।
तो, आइए उपरोक्त OS आवंटन नियम को ठीक करें और विभिन्न RAM कॉन्फ़िगरेशन में InnoDB गणना पद्धति की जांच करें:
छोटे आकार की RAM वाले सिस्टम के लिए (<=1GB)
1GB से कम RAM वाले सिस्टम के लिए, InnoDB बफर पूल आकार के लिए 128MB के MySQL डिफ़ॉल्ट कॉन्फ़िगरेशन मान के साथ जाना बेहतर है।पी>
मध्यम आकार के RAM वाले सिस्टम के लिए (1GB - 32GB)
1GB - 32GB RAM आकार वाले सिस्टम के मामले को ध्यान में रखते हुए, हम इस मोटे अनुमान का उपयोग करके OS आवश्यकताओं की गणना कर सकते हैं:
256MB + 256 * log2(RAM size in GB)
यहाँ युक्तिकरण यह है कि, कम RAM विन्यास के लिए, हम OS की जरूरतों के लिए 256MB के आधार मान के साथ शुरू करते हैं और इस आवंटन को एक लघुगणकीय पैमाने में बढ़ाते हैं जैसे RAM की मात्रा बढ़ जाती है। इस तरह, हम अपने OS की जरूरतों के लिए RAM आवंटित करने के लिए एक नियतात्मक सूत्र के साथ आ सकते हैं। हम अपनी MySQL की अन्य जरूरतों के लिए भी उतनी ही मेमोरी आवंटित करेंगे। उदाहरण के लिए, 3GB RAM वाले सिस्टम में, हम OS की ज़रूरतों के लिए 660MB और MySQL की अन्य ज़रूरतों के लिए 660MB का उचित आवंटन करेंगे, जिसके परिणामस्वरूप हमारे InnoDB बफर पूल आकार के लिए लगभग 1.6GB का मान होगा।
उच्च आकार की RAM (> 32GB) वाले सिस्टम के लिए
32GB से अधिक RAM आकार वाले सिस्टम के लिए, हम अपने सिस्टम RAM आकार के 5% के रूप में OS आवश्यकताओं की गणना करने के लिए वापस लौटेंगे, और उसी राशि के लिए MySQL अन्य जरूरत है। इसलिए, 192GB के RAM आकार वाले सिस्टम के लिए, हमारी विधि InnoDB बफर पूल आकार के लिए लगभग 165GB पर आएगी, जो कि फिर से उपयोग करने के लिए एक इष्टतम मान है।
InnoDB बफर पूल साइज कैलकुलेटर
किसी भी आकार की RAM के लिए इष्टतम मान की गणना करें:
InnoDB बफर पूल आकार कैलकुलेटर - किसी भी सिस्टम के लिए इष्टतम संख्या की गणना करें RAM आकार ट्वीट करने के लिए क्लिक करें
विभिन्न RAM आकारों के लिए InnoDB बफर पूल आकार का प्लॉट
InnoDB बफर पूल आकार गणना के लिए सावधानी के शब्द
इस ब्लॉग पोस्ट में विचार लिनक्स सिस्टम के लिए हैं जो MySQL के लिए समर्पित हैं। विंडोज सिस्टम या सिस्टम के लिए जो MySQL के साथ कई एप्लिकेशन चलाते हैं, ये अवलोकन गलत हो सकते हैं। यह भी ध्यान रखना महत्वपूर्ण है कि, हालांकि हम इन उपकरणों को संदर्भ के रूप में उपयोग कर सकते हैं, यह वास्तव में आपके innodb_buffer_pool_size के लिए सही आकार प्राप्त करने के लिए अच्छा अनुभव, प्रयोग, निरंतर निगरानी और फाइन-ट्यूनिंग लेता है।