MySQL अब तक 100 मिलियन डाउनलोड के साथ सबसे तेजी से बढ़ने वाला ओपन-सोर्स रिलेशनल डेटाबेस मैनेजमेंट सिस्टम है। यह वेब अनुप्रयोगों में उपयोग के लिए डेटाबेस का एक लोकप्रिय विकल्प है और वर्तमान में फेसबुक, ट्विटर, विकिपीडिया, फ़्लिकर, यूट्यूब इत्यादि सहित कई बड़ी वेबसाइटों द्वारा उपयोग किया जाता है। अब, आइए MySQL के बारे में शीर्ष 10 रोचक तथ्यों और युक्तियों का पता लगाएं।
MySQL के बारे में रोचक तथ्य और सुझाव
1. MySQL प्रति टेबल 64 इंडेक्स तक सपोर्ट करता है। प्रत्येक इंडेक्स में 1 से 16 कॉलम हो सकते हैं। अधिकतम सूचकांक आकार 1000 बाइट्स (InnoDB के लिए 767) है।
2. एक MySQL तालिका में एक पंक्ति का अधिकतम आकार 65,535 बाइट्स है। और Signed Integer का अधिकतम मान 2,147,483,647 है और Unsigned Integer का मान 4,294,967,295 है। CHAR और VARCHAR दोनों के साथ मिश्रित तालिका में, MySQL CHAR को VARCHAR में बदल देगा।
3. यदि प्राथमिक कुंजी या अद्वितीय अनुक्रमणिका में केवल एक स्तंभ होता है जिसमें पूर्णांक प्रकार होता है, तो आप SELECT कथनों में स्तंभ को "_rowid" के रूप में भी संदर्भित कर सकते हैं।
4. AUTO_INCREMENT का मान बदलने के लिए, "ALTER TABLE
5. MySQL को सार्वजनिक रूप से एक्सेस करने से रोकने के लिए, कॉन्फिग फाइल में "स्किप-नेटवर्किंग" विकल्प का उपयोग करें। जब इसे सक्षम किया जाता है, तो MySQL केवल स्थानीय सॉकेट कनेक्शन को सुनता है और सभी टीसीपी पोर्ट को अनदेखा करता है। और "बाइंड-एड्रेस" पैरामीटर जो "127.0.0.1" पर सेट है, MySQL को केवल लोकलहोस्ट द्वारा एक्सेस करने के लिए प्रतिबंधित करता है।
6. यदि MySQL में कई कनेक्ट स्थापित हैं (अर्थात बिना लगातार कनेक्शन वाली वेबसाइट), तो आप thread_cache_size को गैर-शून्य मान पर सेट करके प्रदर्शन में सुधार कर सकते हैं। 16 शुरू करने के लिए एक अच्छा मूल्य है। मान बढ़ाएँ जब तक कि आपके थ्रेड्स_क्रिएटेड बहुत तेज़ी से नहीं बढ़ते।
7. NO_AUTO_VALUE_ON_ZERO 0 के लिए ऑटो इंक्रीमेंट को दबा देता है। केवल NULL अगला अनुक्रम संख्या उत्पन्न करता है। यह मोड उपयोगी हो सकता है यदि 0 को किसी तालिका के AUTO_INCREMENT कॉलम में संग्रहीत किया गया हो। (वैसे, 0 को स्टोर करना अनुशंसित अभ्यास नहीं है।)
8. कॉन्फ़िगरेशन विकल्प "innodb_analyze_is_persistent", "innodb_stats_persistent_sample_pages" और "innodb_stats_transient_sample_pages" InnoDB इंडेक्स आंकड़ों की बेहतर सटीकता प्रदान करते हैं, और MySQL पुनरारंभ में स्थिरता प्रदान करते हैं। InnoDB उन आँकड़ों को पूर्व-गणना करता है जो ऑप्टिमाइज़र को यह तय करने में मदद करते हैं कि इंडेक्स के एक हिस्से का नमूना लेकर क्वेरी में कौन से इंडेक्स का उपयोग करना है। आप नमूनाकरण की मात्रा को समायोजित कर सकते हैं जो InnoDB प्रत्येक अनुक्रमणिका के लिए करता है। परिणामी आंकड़े अब पुनरारंभ और कुछ रनटाइम घटनाओं के कारण पुनर्गणना (और संभवतः बदलते) होने के बजाय सर्वर पुनरारंभ पर बने रह सकते हैं। अधिक सटीक आँकड़े क्वेरी प्रदर्शन में सुधार कर सकते हैं, और दृढ़ता पहलू क्वेरी प्रदर्शन को स्थिर रख सकते हैं। जब स्थायी आँकड़े सुविधा सक्षम होती है, तो आँकड़ों की पुनर्गणना केवल तभी की जाती है जब आप तालिका के लिए स्पष्ट रूप से विश्लेषण तालिका चलाते हैं।
9. बड़ी संख्या में टेबल वाले सिस्टम पर मेमोरी लोड को कम करने के लिए InnoDB एक खुली हुई तालिका से जुड़ी मेमोरी को मुक्त करता है। एक LRU एल्गोरिथम उन तालिकाओं का चयन करता है जो बिना एक्सेस किए सबसे लंबे समय तक चली हैं। खुली तालिकाओं के लिए अधिक मेमोरी आरक्षित करने के लिए, –table_definition_cache=# कॉन्फ़िगरेशन विकल्प का मान बढ़ाएँ।
10. खुली तालिकाओं और समवर्ती कनेक्शनों की संख्या से मेल खाने के लिए table_cache पैरामीटर सेट करें। open_tables मान देखें और यदि यह तेज़ी से बढ़ रहा है तो आपको "table_cache" का आकार बढ़ाने की आवश्यकता है। और "open_file_limit" पैरामीटर के लिए इस सीमा को 20+max_connections+table_cache*2 के रूप में सेट करें। यदि आपके पास जटिल प्रश्न हैं तो "sort_buffer_size" और "tmp_table_size" बहुत महत्वपूर्ण हो सकते हैं। मान क्वेरी की जटिलता और उपलब्ध संसाधनों पर निर्भर करेगा, लेकिन क्रमशः 4Mb और 32Mb अनुशंसित शुरुआती बिंदु हैं।
नोट:ये "प्रति कनेक्शन" मान हैं। इसलिए, इन मापदंडों को सेट करते समय अपने लोड और उपलब्ध संसाधनों पर विचार करें। उदाहरण के लिए Sort_buffer_size केवल तभी आवंटित किया जाता है जब MySQL को एक सॉर्ट करने की आवश्यकता हो, सावधान रहें कि स्मृति समाप्त न हो जाए।