MySQL
विन्यास और ट्यूनिंग
खोज…
टिप्पणियों
कॉन्फ़िगरेशन 3 तरीकों में से एक में होता है:
- कमांड लाइन विकल्प
-
my.cnf
कॉन्फ़िगरेशन फ़ाइल - सर्वर के भीतर से चर सेट करना
कमांड लाइन विकल्प mysqld --long-parameter-name=value --another-parameter
का रूप लेता है। वही पैरामीटर my.conf
कॉन्फ़िगरेशन फ़ाइल में रखा जा सकता है। कुछ मानदंड MySQL के भीतर से सिस्टम चर का उपयोग करके कॉन्फ़िगर करने योग्य हैं। मापदंडों की पूरी सूची के लिए आधिकारिक दस्तावेज की जाँच करें।
चर में डैश हो सकता है -
या अंडरस्कोर _
। रिक्तियाँ आसपास मौजूद हो सकती हैं =
। किलो ,-, मेगा- और गीगा- के लिए K
, M
, G
द्वारा बड़ी संख्या में प्रत्यय लगाए जा सकते हैं। प्रति पंक्ति एक सेटिंग।
झंडे: आमतौर ON
और 1
पर्यायवाची हैं, OFF
और 0
लिए ditto। कुछ झंडे उनके बाद कुछ नहीं हैं।
जब my.cnf
में सेटिंग्स रखते हैं, तो सर्वर के लिए सभी सेटिंग्स [mysqld]
अनुभाग में होनी चाहिए, इसलिए फाइल के अंत में सेटिंग्स को नेत्रहीन रूप से न जोड़ें। (नोट: ऐसे उपकरण जो एकाधिक mysql उदाहरणों को एक my.cnf साझा करने की अनुमति देते हैं, अनुभाग नाम अलग हो सकते हैं।)
InnoDB प्रदर्शन
सैकड़ों सेटिंग्स हैं जिन्हें my.cnf में रखा जा सकता है। MySQL के 'लाइट' उपयोगकर्ता के लिए, वे उतना मायने नहीं रखेंगे।
एक बार जब आपका डेटाबेस गैर-तुच्छ हो जाता है, तो निम्नलिखित पैरामीटर सेट करना उचित है:
innodb_buffer_pool_size
यह लगभग 70% उपलब्ध रैम पर सेट होना चाहिए (यदि आपके पास कम से कम 4 जीबी रैम है, तो एक छोटा प्रतिशत यदि आपके पास एक छोटा वीएम या एंटीक मशीन है)। सेटिंग इनोहीडीबी इंजन द्वारा उपयोग की जाने वाली कैश की मात्रा को नियंत्रित करती है। इसलिए, यह InnoDB के प्रदर्शन के लिए बहुत महत्वपूर्ण है।
बड़ा डेटा डालने के लिए पैरामीटर
यदि आपको कॉलम में चित्र या वीडियो संग्रहीत करने की आवश्यकता है, तो हमें आपके एप्लिकेशन द्वारा आवश्यकतानुसार मूल्य बदलने की आवश्यकता है
max_allowed_packet = 10M
M, Mb, G in Gb, K in Kb है
Group_concat के लिए स्ट्रिंग सीमा बढ़ाएँ
group_concat
का उपयोग group
में गैर-शून्य मानों को समाप्त करने के लिए किया जाता है। परिणामी स्ट्रिंग की अधिकतम लंबाई group_concat_max_len
विकल्प का उपयोग करके सेट की जा सकती है:
SET [GLOBAL | SESSION] group_concat_max_len = val;
GLOBAL
चर सेट करना एक स्थायी परिवर्तन सुनिश्चित करेगा, जबकि SESSION
चर सेट करने से वर्तमान सत्र के लिए मूल्य निर्धारित होगा।
न्यूनतम InnoDB कॉन्फ़िगरेशन
यह InnoDB तालिकाओं का उपयोग करके MySQL सर्वर के लिए एक नंगे न्यूनतम सेटअप है। InnoDB का उपयोग करके, क्वेरी कैश की आवश्यकता नहीं है। जब डिस्क या डेटाबेस DROP
एड होता है तो डिस्क स्थान को पुनः प्राप्त करें। यदि आप SSDs का उपयोग कर रहे हैं, तो फ्लशिंग एक अतिरेक ऑपरेशन है (SDD क्रमिक नहीं हैं)।
default_storage_engine = InnoDB
query_cache_type = 0
innodb_file_per_table = 1
innodb_flush_neighbors = 0
संगामिति
सुनिश्चित करें कि हम innodb_thread_concurrency
को अनंत (0) पर सेट करके डिफ़ॉल्ट 4 थ्रेड्स से अधिक बना सकते हैं; यह InnoDB इष्टतम निष्पादन के आधार पर निर्णय लेने देता है।
innodb_thread_concurrency = 0
innodb_read_io_threads = 64
innodb_write_io_threads = 64
हार्ड ड्राइव का उपयोग
MySQL के लिए IOPS की क्षमता (सामान्य भार) और क्षमता_max (पूर्ण अधिकतम) सेट करें। एचडीडी के लिए 200 का डिफॉल्ट ठीक है, लेकिन इन दिनों, हजारों आईओपीएस में सक्षम एसएसडी के साथ, आप इस संख्या को समायोजित करना चाहते हैं। IOPS निर्धारित करने के लिए आप कई परीक्षण चला सकते हैं। यदि आप एक समर्पित MySQL सर्वर चला रहे हैं तो उपरोक्त मान लगभग उस सीमा के होने चाहिए। यदि आप एक ही मशीन पर कोई अन्य सेवा चला रहे हैं, तो आपको उचित रूप में अपील करनी चाहिए।
innodb_io_capacity = 2500
innodb_io_capacity_max = 3000
रैम उपयोग
RAM को MySQL के लिए उपलब्ध करें। जबकि अंगूठे का नियम 70-80% है, यह वास्तव में इस बात पर निर्भर करता है कि आपका उदाहरण MySQL को समर्पित है या नहीं, और कितना RAM उपलब्ध है। यदि आपके पास बहुत कुछ उपलब्ध है तो रैम (यानी संसाधन) बर्बाद न करें ।
innodb_buffer_pool_size = 10G
सुरक्षित MySQL एन्क्रिप्शन
डिफ़ॉल्ट एन्क्रिप्शन aes-128-ecb
इलेक्ट्रॉनिक कोडबुक (ECB) मोड का उपयोग करता है, जो असुरक्षित है और इसका उपयोग कभी नहीं किया जाना चाहिए। इसके बजाय, अपनी कॉन्फ़िगरेशन फ़ाइल में निम्न जोड़ें:
block_encryption_mode = aes-256-cbc