इस लेख में, हम MySQL के लिए कुछ महत्वपूर्ण प्रदर्शन ट्यूनिंग सेटिंग्स के बारे में जानेंगे और उन पर चर्चा करेंगे, जिन्हें हमें MySQL इंस्टालेशन के बाद बेहतर और तेज प्रदर्शन के बाद लागू करने की आवश्यकता है।
पूर्वापेक्षाएँ
यह मानते हुए कि हमने पहले ही MySQL स्थापित कर लिया है, मैं MySQL के लिए प्रदर्शन ट्यूनिंग सेटिंग्स के बारे में जानना शुरू करने से पहले कुछ सुझाव प्रदान कर रहा हूं।
यहां तक कि अनुभवी आईटी व्यक्ति भी कुछ गलतियाँ कर सकते हैं जिससे कई समस्याएं हो सकती हैं, इसलिए इससे पहले कि हम इस लेख में दिखाए गए किसी भी सिफारिश को लागू करें, हम मुद्दों या समस्याओं से बचने के लिए नीचे दी गई बातों को ध्यान में रखेंगे।
-
हम एक समय में केवल एक सेटिंग लागू करेंगे ताकि हम लाभकारी तरीके से परिवर्तनों का अनुमान लगा सकें।
-
लगभग सभी परिवर्तनों को "सेट ग्लोबल" के साथ रनटाइम स्तर पर बदला जा सकता है जो बहुत आसान है और हमें उन परिवर्तनों को वापस करने की अनुमति देता है जो हम लागू करते हैं और कोई समस्या पैदा करते हैं। अंत में, हम कॉन्फ़िगरेशन फ़ाइल में सेटिंग करके स्थायी परिवर्तन लागू कर सकते हैं।
-
यदि सेवा पुनरारंभ (MySQL) के बाद भी कॉन्फ़िगरेशन में कोई परिवर्तन लागू नहीं होता है, तो यह गलत कॉन्फ़िगरेशन फ़ाइल के कारण हो सकता है? या सेटिंग सही सेक्शन पर लागू होती है?.
-
MySQL डुप्लिकेट सेटिंग्स की अनुमति नहीं देगा। यदि हम संस्करण नियंत्रण का उपयोग करने के लिए सुझाए गए परिवर्तनों पर नज़र रखना चाहते हैं।
कुछ प्रदर्शन ट्यूनिंग MySQL सेटिंग्स
यहां [mysqld] अनुभाग में कुछ प्रदर्शन ट्यूनिंग सेटिंग्स दी गई हैं जहां हम कुछ प्रदर्शन ट्यूनिंग सेटिंग्स के बारे में जान सकते हैं। इन सेटिंग्स को केवल स्थापना के समय ही बदलने की अनुशंसा की जाती है।
innodb_buffer_pool_size - InnoDB का उपयोग करके इंस्टॉलेशन के तुरंत बाद देखने के लिए यह एक बहुत ही महत्वपूर्ण सेटिंग है। InnoDB बफर पूल है जहां डेटा को कैश्ड अनुक्रमित किया जाता है, जिसमें एक बहुत बड़ा संभावित आकार होता है जो सुनिश्चित करेगा और अधिकांश रीड-राइट ऑपरेशंस के लिए मेमोरी नो डिस्क स्पेस का उपयोग करेगा, आमतौर पर InnoDB मानों का आकार 5 है। -6GB 8GB रैम के लिए।
innodb_log_file_size - यह सेटिंग्स फिर से लॉग के लिए है। रीडो लॉग यह सुनिश्चित करता है कि क्रैश रिकवरी के समय भी पढ़ना और लिखना तेज और टिकाऊ है, MySQL 5.1 के पिछले संस्करणों में, समायोजन करना बहुत कठिन है क्योंकि हमें बेहतर प्रदर्शन के लिए बहुत बड़े रीडो लॉग की आवश्यकता होती है और एक छोटा रीडो लॉग MySQL की फास्ट क्रैश रिकवरी के लिए एक क्रिया है। MySQL संस्करण 5.5 के बाद क्रैश रिकवरी प्रदर्शन में सुधार हुआ है। MySQL रीडो लॉग साइज की सीमा MySQL 5.5 में 4GB तक सीमित थी अब MySQL 5.6 में रीडो लॉग साइज का साइज हटा दिया गया है।
अधिकतम_कनेक्शन - "बहुत सारे कनेक्शन" त्रुटि से बचने के लिए हमें max_connections को बढ़ाना होगा डिफ़ॉल्ट कनेक्शन 151 है, max_connections के लिए उच्च मानों का मुख्य दोष सर्वर को अनुत्तरदायी बनाता है यदि कनेक्शन की संख्या अधिक और सक्रिय लेनदेन है।
Innodb_log_buffer_size - यह सेटिंग उन लेन-देन के लिए बफर का आकार है जो अभी तक प्रतिबद्ध नहीं हैं। डिफ़ॉल्ट मान 1 एमबी है, क्योंकि हमारे पास टेक्स्ट/ब्लॉब फ़ील्ड के साथ बड़े लेनदेन हैं, बफर आकार बहुत तेज़ी से भर जाएगा और अतिरिक्त इनपुट और आउटपुट लोड ट्रिगर करेगा, हम innodb_log_buffer_size बढ़ा सकते हैं।
Innodb_flush_method - लॉग और डेटा को डिस्क में कैसे प्रवाहित किया जाता है, इसे नियंत्रित करने के लिए यह सेटिंग। सर्वोत्तम मान O_DIRECT हैं जब हमारे पास अधिकांश परिदृश्यों के लिए राइट-बैक कैश और डेटा सिंक के साथ RAID नियंत्रक हार्डवेयर होता है। Sysbench एक अच्छा टूल है जो आपको मान चुनने में मदद करेगा।
query_cache_size - यह सेटिंग अड़चन के लिए अच्छी तरह से जानी जाती है जिसे हम देख सकते हैं कि हमारे पास समवर्ती मध्यम स्तर भी है। सबसे अच्छा विकल्प अक्षम करना है यदि शुरुआत से, अक्षम करने के लिए हमें query_cache_size=0 भेजने की आवश्यकता है यदि हम डिफ़ॉल्ट रूप से MySQL 5.6 संस्करण का उपयोग कर रहे हैं तो इसे अक्षम कर दिया गया है। उदाहरण के लिए हमारे पास Memcache या Redis का उपयोग करके अनुक्रमण को गति देने के अन्य तरीके हैं। यदि हमने पहले से ही क्वेरी कैश सक्षम के साथ एप्लिकेशन को कॉन्फ़िगर किया है और हमें कोई समस्या नहीं है तो क्वेरी कैश उपयोगी है, हमें क्वेरी कैश को अक्षम करने के लिए बहुत सतर्क रहने की आवश्यकता है।
लॉग_बिन - अगर हम सर्वर को प्रतिकृति मास्टर सर्वर बनाना चाहते हैं तो यह सेटिंग बहुत उपयोगी है। यह एकल सर्वर के लिए भी बहुत उपयोगी है जब हम (पॉइंट-इन-टाइम-रिकवरी) नवीनतम बैकअप को पुनर्स्थापित करने और बाइनरी लॉग लागू करने में सक्षम होना चाहते हैं। एक बार log_bin लॉग सक्षम हो जाने के बाद हमेशा के लिए रखा जाता है और हमें सर्वर पर डिस्क स्थान को बचाने के लिए पुराने लॉग को साफ करने की आवश्यकता होती है, हम इसे PURGE BINARY LOGS सेटिंग्स द्वारा या एक्सपायर_लॉग्स_डे सेटिंग सेट करके यह निर्दिष्ट करके कर सकते हैं कि कितने दिनों के बाद log_bin लॉग स्वचालित रूप से हटा दिए जाते हैं।
skip_name_resolve - जब क्लाइंट MySQL सर्वर से कनेक्ट होता है तो इस सेटिंग का पूरी तरह से उपयोग किया जाता है। सर्वर होस्टनाम रिज़ॉल्यूशन निष्पादित करेगा और जब DNS धीमा होगा, तो कनेक्शन भी बहुत धीमा हो जाएगा, इसलिए DNS लुकअप को अक्षम करने के लिए सर्वर को Skip_name_resolve के साथ प्रारंभ करने की अनुशंसा की जाती है, इसलिए जब हम GRANT स्टेटमेंट का उपयोग करते हैं, तो हमें IP पते का उपयोग करना चाहिए होस्टनाम के बजाय, इसलिए, जब हम इस सेटिंग को किसी मौजूदा एप्लिकेशन कॉन्फ़िगरेशन में जोड़ते हैं तो सावधान रहें।
<ब्लॉकक्वॉट>उपरोक्त लेख में हमने सीखा है कि बेहतर प्रदर्शन देने के लिए MySQL को कैसे ट्यून किया जाए, और log_bins, Skip_name_resolve, query_cache_size, innodb_log_buffer_size, max_connections, innodb_log_file_size, innodb_buffer_pool_size को बदलकर MySQL के पढ़ने और लिखने के स्तर को तेज किया जाए।