MySQL बनाम MariaDB
MySQL और MariaDB की पिछली कहानी
MySQL और मारियाडीबी कुछ सामान्य इतिहास साझा करें, दोनों का नाम डेवलपर माइकल विडेनियस की बेटियों, माई और मारिया के नाम पर रखा गया है। MySQL को 1995 में एक स्वीडिश सॉफ्टवेयर कंपनी, MySQL AB . द्वारा बनाया गया था . यह वर्षों में लोकप्रियता में वृद्धि हुई और ओपन-सोर्स रिलेशनल डेटाबेस मैनेजमेंट सिस्टम के लिए मानक बन गया। 2008 में, Sun ने MySQL AB (और अंततः MySQL) को $1 बिलियन में खरीदा। 2009 के अप्रैल में Oracle द्वारा Sun को खरीदने के कुछ ही समय बाद। इस बिंदु पर, Oracle एक प्रतिस्पर्धी डेटाबेस सिस्टम, MySQL का मालिक बन गया। इसने मूल डेवलपर्स को यह देखकर परेशान किया कि उन्हें कैसा लगा कि MySQL का भविष्य खतरे में है। ओपन सोर्स के नियमों का पालन करते हुए, उन्होंने MySQL को "फोर्क" करने और मारियाडीबी बनाने का फैसला किया। और वहां आपके पास है, MySQL और MariaDB एक इतिहास साझा करते हैं!
WHM में MySQL को बदलने के लिए मारियाडीबी को कैसे स्थापित करें, इस पर हमारे पास एक अच्छा ट्यूटोरियल है।
MySQL और MariaDB प्रतिकृति संस्करण
गुलाम↓ मास्टर→ | MariaDB-5.5 | MariaDB-10.0 | MariaDB-10.1 | MariaDB-10.2 | MySQL-5.6 | MySQL-5.7 | MySQL-8.0 |
---|---|---|---|---|---|---|---|
MariaDB-5.5 | ठीक | नहीं | नहीं | नहीं | नहीं | नहीं | नहीं |
MariaDB-10.0 | ठीक | ठीक | ठीक | ||||
MariaDB-10.1 | ठीक | ठीक | ठीक | ठीक | |||
MariaDB-10.2 | ठीक | ठीक | ठीक | ठीक | ठीक | ठीक |
MySQL और MariaDB की फ़ीचर तुलना
अधिक संग्रहण इंजन
MariaDB में मानक भंडारण इंजन MyISAM, BLACKHOLE, CSV, MEMORY, ARCHIVE, और MERGE शामिल हैं। इसमें कुछ कम सामान्य स्टोरेज इंजन भी शामिल हैं जैसे;
- कैसंड्रा (मारियाडीबी 10.0)
- मकड़ी (मारियाडीबी 10.0+)
- अनुक्रम (मारियाडीबी 10.0+)
- कनेक्ट (मारियाडीबी 10.0+)
- TokuDB (मारियाडीबी 5.5+)
- स्फिंक्सएसई (मारियाडीबी 5.2+)
- OQGRAPH (मारियाडीबी 5.5 में उपलब्ध नहीं)
- FederatedX (फेडरेटेड के बदले ड्रॉप इन)
- एरिया (MyISAM को बेहतर कैशिंग के साथ बदलना)
- MyRocks (MariaDB 10.2 स्टोरेज इंजन के साथ बेहतर कंप्रेशन)
- कॉलमस्टोर (डेटा वेयरहाउसिंग के लिए अनुकूलित एक कॉलम ओरिएंटेड स्टोरेज इंजन)
गति सुधार
ऑप्टिमाइज़र सुविधा की तुलना करते समय MariaDB में MySQL पर कई बेहतर एन्हांसमेंट हैं:
सुविधा | MariaDB 5.3/5.5 | MariaDB 10.0 | MySQL 5.5 | MySQL 5.6 |
---|---|---|---|---|
डिस्क एक्सेस ऑप्टिमाइज़ेशन | ||||
इंडेक्स कंडीशन पुशडाउन (ICP) | हाँ | हाँ | – | हाँ |
डिस्क-स्वीप मल्टी-रेंज रीड (DS-MRR) | हाँ | हाँ | – | हाँ |
DS-MRR कुंजी-आदेशित पुनर्प्राप्ति के साथ | हाँ | हाँ | – | – |
Index_merge / Sort_intersection | हाँ | हाँ | – | – |
श्रेणी बनाम अनुक्रमणिका_मर्ज की लागत-आधारित पसंद | हाँ | हाँ | – | – |
आदेश द्वारा ... LIMIT | – | हाँ | – | हाँ |
innodb/xtradb के लिए विस्तारित (छिपी हुई) प्राथमिक कुंजियों का उपयोग करें | हाँ (5.5) | हाँ | – | – |
अनुकूलन में शामिल हों | ||||
बैच्ड की एक्सेस (BKA) | हाँ | हाँ | – | हाँ |
ब्लॉक हैश जॉइन करें | हाँ | हाँ | – | – |
सभी जॉइन बफ़र्स पर उपयोगकर्ता-सेट मेमोरी सीमा | हाँ | हाँ | – | – |
प्रारंभिक बाहरी तालिका शर्तों पर लागू करें | हाँ | हाँ | – | – |
शून्य-अस्वीकार करने की स्थिति का NULLs के लिए जल्दी परीक्षण किया गया | हाँ | हाँ | – | – |
सबक्वायरी ऑप्टिमाइज़ेशन | ||||
अस्तित्व में है | हाँ | हाँ | हाँ | हाँ |
सेमी-जॉइन | हाँ | हाँ | – | हाँ |
भौतिकीकरण | हाँ | हाँ | – | हाँ |
पूर्ण-जागरूक भौतिकीकरण | हाँ | हाँ | – | – |
भौतिकीकरण बनाम इन-टू-अस्तित्व का लागत विकल्प | हाँ | हाँ | – | हाँ |
सबक्वायरी कैशे | हाँ | हाँ | – | – |
उपश्रेणियों के साथ तेजी से समझाएं | हाँ | हाँ | – | – |
EXISTS-to-IN | – | हाँ | – | – |
व्युत्पन्न तालिकाओं / दृश्यों के लिए अनुकूलन | ||||
व्युत्पन्न तालिकाओं / भौतिक विचारों का विलंबित भौतिककरण | हाँ | हाँ | – | हाँ |
व्युत्पन्न तालिकाओं के लिए त्वरित व्याख्या | हाँ | हाँ | – | हाँ |
कुंजी अनुकूलन के साथ व्युत्पन्न तालिका | हाँ | हाँ | – | हाँ |
समानता अनुकूलन में उपयोग किए जाने वाले मर्ज करने योग्य दृश्यों और व्युत्पन्न तालिकाओं के क्षेत्र | हाँ | हाँ | – | – |
निष्पादन नियंत्रण | ||||
पंक्तियों की जांच की गई पंक्तियों को सीमित करें_सीमा | हाँ (5.5) | हाँ | – | – |
अनुकूलक नियंत्रण (अनुकूलक स्विच) | ||||
सभी अनुकूलक रणनीतियों का व्यवस्थित नियंत्रण | हाँ | हाँ | – | आंशिक |
सुधारों की व्याख्या करें | ||||
DELETE, INSERT, REPLACE, और UPDATE के बारे में बताएं | – | आंशिक | – | हाँ |
JSON प्रारूप में व्याख्या करें | – | – | – | हाँ |
सबक्वायरी के लिए अधिक विस्तृत और सुसंगत EXPLAIN | हाँ | हाँ | – | – |
ऑप्टिमाइज़र ट्रेस | ||||
ऑप्टिमाइज़र ट्रेस | – | – | – | हाँ |
- समानांतर प्रतिकृति - 10.0 में नया; तीन भागों में होता है:प्रतिकृति घटनाओं को IO थ्रेड द्वारा पढ़ा जाता है और रिले लॉग में कतारबद्ध किया जाता है, रिले लॉग से SQL थ्रेड द्वारा व्यक्तिगत रूप से प्राप्त किया जाता है, और प्रत्येक घटना को मास्टर पर परिवर्तनों की नकल करने वाले दास पर लागू किया जाता है।
- प्रदर्शन सुधारों में विंडोज़ पर एक बेहतर InnoDB एसिंक्रोनस IO सबसिस्टम शामिल है।
- मेमोरी (HEAP) इंजन के लिए इंडेक्स तेज होते हैं। नवीनतम सुधारों को MariaDB 5.5 और MySQL 5.7 में लागू किया गया था।
- MyISAM के लिए खंडित कुंजी कैश को MariaDB 5.2 में जोड़ा गया था। इसने MyISAM तालिकाओं में 4x तक के प्रदर्शन में सुधार किया है।
- संस्करण 10.0.13 के अनुसार, MyISAM और Aria के लिए समायोज्य हैश आकार शटडाउन समय में सुधार करता है यदि आप विलंबित कुंजियों के साथ बहुत से MyISAM/Aria तालिकाओं का उपयोग कर रहे हैं।
- CHECKSUM TABLE के साथ त्वरित विकल्प का उपयोग करने से गति में सुधार होता है।
- चरित्र सेट रूपांतरणों और रूपांतरणों को हटाने (जब उनकी आवश्यकता नहीं थी) के साथ प्रदर्शन में सुधार हुआ था। कुल मिलाकर गति में सुधार लगभग 1-5% है लेकिन बड़े परिणाम सेट के साथ तेज़ हो सकता है।
- MariaDB 5.1/MariaDB 5.5 में थ्रेड का पूल, MariaDB को 200,000+ कनेक्शन के साथ चलने की अनुमति देता है, जिससे कई कनेक्शन का उपयोग करते समय गति में सुधार होता है।
- MariaDB 10.1 और MariaDB 10.2 के रूप में क्लाइंट कनेक्शन सुधार जोड़े गए।
- मारियाडीबी के भीतर डीबीयूजी कोड में कुछ सुधार कोड को तेजी से चलाने में मदद करते हैं, जिसमें डिबग को संकलित किया जाता है, लेकिन इसका उपयोग नहीं किया जाता है।
- आंतरिक अस्थायी तालिकाओं का उपयोग करके एरिया स्टोरेज इंजन का उपयोग बेहतर प्रदर्शन के लिए अनुमति देता है।
- विस्तारित परीक्षण सूची के साथ भी परीक्षण सूट तेजी से चलता है।
नई सुविधाएं और एक्सटेंशन
बेहतर परीक्षण
मारियाडीबी में MySQL की तुलना में परीक्षण सूट में अधिक परीक्षण हैं। अमान्य और सभी अनावश्यक परीक्षण हटा दिए गए हैं। परीक्षण सूट के मुद्दों को ठीक कर दिया गया है।
कम कीड़े
वर्तमान में, मारियाडीबी समुदाय सतर्क है और जितनी जल्दी हो सके बग्स को ठीक करने के लिए काम करता है। इसके अतिरिक्त, बग में कमी के परिणामस्वरूप कंपाइलर चेतावनियां भी कम कर दी गई हैं।
ओपन सोर्स
मारियाडीबी के लिए सभी स्रोत कोड जीपीएल, एलजीपीएल, या बीएसडी के तहत जारी किए गए हैं। जबकि MySQL ने अपने एंटरप्राइज़ संस्करण में स्रोत मॉड्यूल बंद कर दिए हैं, मारियाडीबी के पास कोई बंद स्रोत मॉड्यूल नहीं है। मारियाडीबी ने अपने ओपन सोर्स संस्करण में MySQL 5.5 एंटरप्राइज संस्करण में निहित सभी बंद स्रोत सुविधाओं को शामिल किया। मारियाडीबी में सभी नए फिक्स्ड बग्स के लिए टेस्ट केस शामिल हैं। MySQL, MySQL 5.5 में फिक्स किए गए बग्स के लिए टेस्ट केस प्रदान नहीं करता है। मारियाडीबी भविष्य की सभी विकास योजनाओं को सार्वजनिक करता है, जिसमें बग और उनके सुधार शामिल हैं। मारियाडीबी का एक बड़ा समुदाय है और डेवलपर्स के उस समुदाय में विभिन्न प्रकार के योगदानकर्ता शामिल हैं, जबकि सभी माईक्यूएल को माफ कर देते हैं, ओरेकल कर्मचारियों से प्रतीत होते हैं। MySQL क्लाइंट लाइब्रेरी को GPL लाइसेंस के तहत जारी किया जाता है जो क्लोज्ड सोर्स एप्लिकेशन से लिंक करने पर रोक लगाता है। इसके विपरीत, मारियाडीबी एलजीपीएल लाइसेंस के तहत क्लाइंट लाइब्रेरी को बंद स्रोत सॉफ़्टवेयर से जोड़ने की अनुमति देता है।
MariaDB और MySQL के बीच संगतता समस्याएं
मारियाडीबी को MySQL के लिए एक ड्रॉप-इन प्रतिस्थापन के रूप में डिजाइन किया गया था और यह मूल MySQL कोड बेस का एक कांटा था। इसका मतलब यह है कि जब MySQL से MariaDB पर स्विच किया जाता है तो यह अपेक्षाकृत सरल प्रक्रिया होती है। आप बस MySQL को अनइंस्टॉल करें और MariaDB इंस्टॉल करें। चूंकि यह एक ड्रॉप-इन प्रतिस्थापन है, इसलिए किसी भी डेटा को परिवर्तित करने की कोई आवश्यकता नहीं है। मारियाडीबी के डेवलपर्स यह सुनिश्चित करने के लिए MySQL कोड का मासिक मर्ज करते हैं कि वे संगत बने रहें। MySQL और MariaDB के संस्करणों के बीच अलग-अलग असंगतताएं हैं, भले ही संस्करणों को उनके संबंधित संस्करण संख्याओं (उदाहरण के लिए MySQL 5.1 -> MariaDB 5.1 और MySQL 5.5 -> MariaDB 5.5) द्वारा संगत होने के लिए डिज़ाइन किया गया हो।
MariaDB 10.0 और MariaDB 5.5 / MySQL 5.5 के बीच असंगतता
- सेट विकल्प सिंटैक्स मारियाडीबी 10.0 और MySQL 5.6 में बहिष्कृत है। बस SET का उपयोग करें।
MariaDB 10.0 और MySQL 5.6 के बीच असंगतता
- सभी MySQL बायनेरिज़ (MySQLd, myisamchk आदि) एक चेतावनी देते हैं यदि कोई किसी विकल्प के उपसर्ग का उपयोग करता है (जैसे -बिग-टेबल के बजाय -बिग-टेबल)। मारियाडीबी बायनेरिज़ उसी तरह से काम करता है जैसे अधिकांश अन्य यूनिक्स कमांड और अद्वितीय उपसर्गों का उपयोग करते समय चेतावनी नहीं देते हैं।
- MariaDB GTID MySQL 5.6 के साथ संगत नहीं है। इसका मतलब है कि किसी के पास मारियाडीबी 10.0 के दास के रूप में MySQL 5.6 नहीं हो सकता है। हालांकि मारियाडीबी 10.0 MySQL 5.6 या किसी पुराने MySQL/MariaDB संस्करण का गुलाम हो सकता है।
- MariaDB 10.0 बहु-स्रोत प्रतिकृति MySQL 5.6 में समर्थित नहीं है।
- MariaDB 10.0 डायनेमिक कॉलम MySQL 5.6 द्वारा समर्थित नहीं हैं।
- तालिका बनाने के लिए ... चयन करें उसी तरह से कथन आधारित और पंक्ति आधारित प्रतिकृति में काम करें, इसे डिफ़ॉल्ट रूप से दास पर तालिका बनाएं या बदलें के रूप में निष्पादित किया जाता है। इसका एक फायदा यह भी है कि अगर क्रिएट के बीच में गुलाम की मौत हो जाती है... सेलेक्ट करें तो वह जारी रह पाएगा।
- कोई भी स्लेव-डीडीएल-एक्ज़ीक्यूटिव-मोड वैरिएबल का उपयोग यह निर्दिष्ट करने के लिए कर सकता है कि टेबल और ड्रॉप टेबल को कैसे दोहराया जाए।
- MariaDB 10.0 और MySQL 5.6 के बीच सिस्टम चर अंतरों का विस्तृत विश्लेषण भी देखें।
- MySQL 5.6 में डिफ़ॉल्ट रूप से प्रदर्शन स्कीमा सक्षम है। प्रदर्शन कारणों से मारियाडीबी 10.0 ने इसे डिफ़ॉल्ट रूप से अक्षम कर दिया है। आप MySQLd को -परफॉर्मेंस-स्कीमा विकल्प के साथ शुरू करके इसे सक्षम कर सकते हैं।
- MariaDB 10.0 MySQL Memcached प्लगइन का समर्थन नहीं करता है।
- MySQL के SHA256 पासवर्ड एल्गोरिथम के साथ बनाए गए उपयोगकर्ताओं का उपयोग MariaDB 10.0 में नहीं किया जा सकता है।
- MariaDB 10.0 विलंबित प्रतिकृति का समर्थन नहीं करता - MDEV-7145.
MariaDB 10.1 और MySQL 5.7 के बीच असंगतता
- MariaDB 10.1 MySQL 5.7 के JSON का समर्थन नहीं करता है।
- MariaDB 10.1 का InnoDB एन्क्रिप्शन MySQL 5.7 के InnoDB एन्क्रिप्शन से अलग तरीके से लागू किया गया है।
- MariaDB 10.1 ngram और MeCab पूर्ण-पाठ पार्सर प्लगइन्स का समर्थन नहीं करता - MDEV-10267, MDEV-10268।
- MariaDB 10.1 किसी तालिका के लिए एकाधिक ट्रिगर का समर्थन नहीं करता - MDEV-6112।
- MariaDB 10.1 InnoDB के लिए CREATE TABLESPACE का समर्थन नहीं करता है।
MariaDB 10.2 और MySQL 5.7 के बीच असंगतता
- MariaDB 10.2 और MySQL 5.7 के बीच सिस्टम चर अंतर।
- MariaDB 10.2 और MySQL 5.7 के बीच फ़ंक्शन अंतर।
- 10.2 में प्रति तालिका कई ट्रिगर जोड़े गए
- MariaDB InnoDB एन्क्रिप्शन को MySQL 5.7 के InnoDB एन्क्रिप्शन से अलग तरीके से लागू किया जाता है।
- MariaDB JSON को वास्तविक पाठ के रूप में संग्रहीत करता है, MySQL के रूप में बाइनरी प्रारूप में नहीं। इसका कारण यह है कि हमारे JSON फ़ंक्शन MySQL की तुलना में बहुत तेज़ हैं, इसलिए हमें बाइनरी प्रारूप में चीजों को संग्रहीत करने की आवश्यकता नहीं है क्योंकि यह JSON ऑब्जेक्ट्स में हेरफेर करते समय बहुत अधिक जटिलता जोड़ता है।
- MariaDB 10.2 ngram और MeCab पूर्ण-पाठ पार्सर प्लगइन्स का समर्थन नहीं करता - MDEV-10267, MDEV-10268।
- MariaDB 10.2 MySQL X प्लगइन का समर्थन नहीं करता है।
- MariaDB 10.2 MySQL सामान्य टेबल स्पेस का समर्थन नहीं करता है।
- MariaDB 10.1 और MySQL 5.7 के बीच असंगतताएं भी देखें।