Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डेटाबेस कॉर्नर:मैसकल स्टोरेज इंजन के लिए शुरुआती गाइड

जब एक डेटाबेस बनाया जाता है, तो अक्सर अनदेखी की जाती है लेकिन प्रदर्शन में महत्वपूर्ण कारक स्टोरेज इंजन होता है (विशेषकर जैसे डेटाबेस बढ़ता है)। कई उदाहरणों में, प्रलोभन केवल डिफ़ॉल्ट को स्वीकार करना और अपनी परियोजना को विकसित करना जारी रखना है। यह बाद में एप्लिकेशन जीवन चक्र में प्रदर्शन, बैकअप और डेटा अखंडता पर अप्रत्याशित नकारात्मक प्रभाव डाल सकता है, जैसे कि जब आपकी टीम एनालिटिक्स और MySQL डैशबोर्ड लागू करती है।

इन संभावित नुकसानों से बचने के लिए, हम MySQL (संस्करण 5.7 के अनुसार) द्वारा समर्थित कुछ सबसे व्यापक रूप से उपयोग किए जाने वाले स्टोरेज इंजनों पर करीब से नज़र डालने जा रहे हैं।

समर्थित संग्रहण इंजन

मेरे पास क्या विकल्प हैं?

डिफ़ॉल्ट रूप से, MySQL 5.7 दस स्टोरेज इंजन (InnoDB, MyISAM, मेमोरी, CSV, आर्काइव, ब्लैकहोल, NDB, मर्ज, फ़ेडरेटेड और उदाहरण) का समर्थन करता है। यह देखने के लिए कि आपके सर्वर द्वारा कौन से उपलब्ध हैं और समर्थित हैं, इस कमांड का उपयोग करें:

mysql> इंजन दिखाएं\G

यह भंडारण इंजनों की एक सूची को आउटपुट करेगा और आपको बताएगा कि कौन सा उपलब्ध है, उपलब्ध नहीं है, या जो वर्तमान में डिफ़ॉल्ट पर सेट है। "समर्थन:" कॉलम क्रमशः 'हां', 'नहीं', या 'डिफ़ॉल्ट' प्रदर्शित करेगा।

कुछ अनुप्रयोगों में, एक ही डेटाबेस में अलग-अलग तालिकाओं के लिए अलग-अलग स्टोरेज इंजन की आवश्यकता उत्पन्न हो सकती है। यह एक उदाहरण है कि आपको अपने आवेदन के लिए डेटा मॉडल की सावधानीपूर्वक योजना बनाने की आवश्यकता क्यों है। हालांकि, ज्यादातर मामलों में, केवल एक स्टोरेज इंजन की आवश्यकता होगी।

संग्रहण इंजन क्षमताएं

वे किसमें अच्छे हैं?

आइए कुछ सबसे अधिक उपयोग किए जाने वाले स्टोरेज इंजनों पर करीब से नज़र डालें। इससे हमें अंदाजा हो जाएगा कि प्रत्येक इंजन को क्या करने के लिए डिज़ाइन किया गया था और हमारे व्यावसायिक लक्ष्यों को पूरा करने के लिए उनका सर्वोत्तम उपयोग कैसे किया जा सकता है।

InnoDB: MySQL 5.7 में डिफ़ॉल्ट विकल्प, InnoDB एक मजबूत स्टोरेज इंजन है जो प्रदान करता है:

  • पूर्ण ACID अनुपालन
  • प्रतिबद्ध, रोलबैक, और क्रैश-रिकवरी
  • पंक्ति-स्तरीय लॉकिंग
  • विदेशी कुंजी संदर्भ-अखंडता बाधाएं
  • बहु-उपयोगकर्ता संगामिति बढ़ाएँ (नॉन-लॉकिंग रीड के माध्यम से)

उपरोक्त कार्यक्षमता के साथ जो InnoDB प्रदान करता है, यह स्पष्ट है कि यह MySQL में डिफ़ॉल्ट इंजन क्यों है। यह एक इंजन है जो अच्छा प्रदर्शन करता है और कई आवश्यक विशेषताएँ प्रदान करता है जिनकी किसी भी डेटाबेस को आवश्यकता होगी। हालाँकि, इसकी सभी क्षमताओं की व्यापक चर्चा इस लेख के दायरे से बाहर है। यह वह इंजन है जिसका अधिकांश अनुप्रयोगों में सबसे अधिक उपयोग किया जाएगा।

मायसाम: MyISAM को अलग करने वाली कार्यक्षमता इसके लिए इसकी क्षमता है:

  • पूर्ण पाठ खोज अनुक्रमणिका
  • टेबल-लेवल लॉकिंग
  • लेन-देन के लिए समर्थन की कमी

हालांकि यह एक तेज़ स्टोरेज इंजन है, यह डेटा वेयरहाउसिंग और वेब एप्लिकेशन जैसे रीड-हैवी और अधिकतर पढ़ने वाले एप्लिकेशन में उपयोग के लिए सबसे उपयुक्त है, जिन्हें लेनदेन समर्थन या एसीआईडी ​​​​अनुपालन की आवश्यकता नहीं है।

एनडीबी (या NDBCLUSTER):यदि आपका डेटाबेस काम करने वाला एक संकुल वातावरण है, तो NDB पसंद का स्टोरेज इंजन है। जरूरत पड़ने पर यह सबसे अच्छा होता है:

  • वितरित कंप्यूटिंग
  • उच्च अतिरेक
  • उच्च उपलब्धता
  • उच्चतम संभावित अपटाइम्स

ध्यान दें कि मानक MySQL सर्वर 5.7 बायनेरिज़ के वितरण में NDB के लिए समर्थन शामिल नहीं है। आपको MySQL क्लस्टर की नवीनतम बाइनरी रिलीज़ में अपडेट करना होगा। हालांकि, यदि आप क्लस्टर वातावरण में विकास कर रहे हैं, तो संभवतः आपके पास इन कार्यों से निपटने के लिए आवश्यक अनुभव है।

सीएसवी: एक उपयोगी भंडारण इंजन जब डेटा को अन्य अनुप्रयोगों के साथ साझा करने की आवश्यकता होती है जो सीएसवी स्वरूपित डेटा का उपयोग करते हैं। टेबल्स को कॉमा सेपरेटेड वैल्यू टेक्स्ट फाइल्स के रूप में स्टोर किया जाता है। हालांकि यह डेटा को स्क्रिप्ट और एप्लिकेशन के साथ साझा करना आसान बनाता है, एक कमी यह है कि सीएसवी फाइलें अनुक्रमित नहीं होती हैं। इसलिए, प्रक्रिया के आयात/निर्यात चरण तक डेटा को एक InnoDB तालिका में संग्रहीत किया जाना चाहिए।

ब्लैकहोल: यह इंजन डेटा को स्वीकार तो करता है लेकिन स्टोर नहीं करता है। UNIX /dev/null के समान, क्वेरीज़ हमेशा एक खाली सेट लौटाती हैं। यह एक वितरित डेटाबेस वातावरण में उपयोगी हो सकता है जहाँ आप डेटा को स्थानीय रूप से या प्रदर्शन या अन्य परीक्षण स्थितियों में संग्रहीत नहीं करना चाहते हैं।

संग्रह करें: जैसा कि नाम से ही स्पष्ट है, यह इंजन दुर्लभ-संदर्भित ऐतिहासिक डेटा के लिए उत्कृष्ट है। तालिकाओं को अनुक्रमित नहीं किया जाता है और सम्मिलित करने पर संपीड़न होता है। लेनदेन समर्थित नहीं हैं। पिछले डेटा को संग्रहीत करने और पुनर्प्राप्त करने के लिए इस संग्रहण इंजन का उपयोग करें।

संघीय: यह स्टोरेज इंजन कई अलग-अलग भौतिक MySQL सर्वरों को जोड़कर एकल, स्थानीय, तार्किक डेटाबेस बनाने के लिए है। स्थानीय सर्वर पर कोई डेटा संग्रहीत नहीं किया जाता है और संबंधित दूरस्थ सर्वर पर स्वचालित रूप से क्वेरी निष्पादित की जाती हैं। यह वितरित डेटा मार्ट वातावरण के लिए एकदम सही है और विश्लेषणात्मक रिपोर्टिंग के लिए MySQL का उपयोग करते समय प्रदर्शन में काफी सुधार कर सकता है।

भंडारण इंजन निर्दिष्ट करना

मैं कैसे बदलूं कि किस स्टोरेज इंजन का उपयोग किया जाता है?

उपयोग किया जाने वाला स्टोरेज इंजन टेबल निर्माण पर स्थापित होता है। जैसा कि पहले कहा गया है, InnoDB MySQL संस्करण 5.5 और उच्चतर में डिफ़ॉल्ट स्टोरेज इंजन है। यदि आप किसी भिन्न का उपयोग करना चाहते हैं, तो इसे अपने CREATE TABLE स्टेटमेंट में करना सबसे अच्छा है। उदाहरण के लिए, मान लें कि आपने एक ऐसी तालिका की पहचान की है जिसके लिए CSV संग्रहण इंजन का उपयोग करने की आवश्यकता है। आपका अत्यधिक सरलीकृत CREATE TABLE स्टेटमेंट इस तरह दिख सकता है:

mysql> तालिका साझा_डेटा बनाएं (
    -> Data_ID INTEGER NOT NULL,
    -> नाम VARCHAR(50) NOT NULL,
    -> विवरण VARCHAR(150)
    -> ) इंजन='सीएसवी';
जिसके बाद हम हमेशा की तरह एक INSERT स्टेटमेंट करेंगे:
mysql> INSERT INTO Shared_Data VALUES
-> (1,'डिवाइस वन', 'सर्वश्रेष्ठ तकनीक का नवीनतम संस्करण'),
-> (2,'डिवाइस दो', 'बाजार में सबसे तेज');

सफल होने पर, यदि आप डेटाबेस निर्देशिका का निरीक्षण करते हैं, तो अब इसमें एक 'Shared_Data.CSV' फ़ाइल होनी चाहिए जिसमें आपके द्वारा Shared_Data तालिका में डाले गए रिकॉर्ड शामिल हों।

MySQL द्वारा समर्थित कई स्टोरेज इंजनों में से किसी एक के लिए एक ही कार्यप्रणाली का उपयोग किया जा सकता है। हालांकि ALTER TABLE के साथ टेबल बनाने के बाद स्टोरेज इंजन को बदलना संभव है। कथन, तदनुसार योजना बनाना और इसे शुरुआत में सेट करना सबसे अच्छा अभ्यास है।

समापन होने पर

MySQL के कई विकल्प हैं

जैसा कि आप देख सकते हैं, MySQL कई अलग-अलग वातावरणों में बहुत अलग कार्यों को संभालने के लिए डिज़ाइन किए गए स्टोरेज इंजन के लिए समर्थन प्रदान करता है। यह पहचानना कि किस इंजन का उपयोग करना है और कब उनका उपयोग करना है, हमारे अनुप्रयोगों के पैमाने के रूप में अनावश्यक जटिलताओं और प्रदर्शन के मुद्दों से बचने में हमारी मदद कर सकता है।

चाहे आपको अपने वितरित कंप्यूटिंग क्लस्टर पर 99.999% अपटाइम और विश्वसनीयता की आवश्यकता हो या आपको FOREIGN KEY बाधाओं के साथ ACID अनुरूप लेनदेन समर्थन की आवश्यकता हो, MySQL में आपकी आवश्यकताओं के अनुरूप स्टोरेज इंजन है।

हमेशा की तरह, आपके प्रोजेक्ट लक्ष्यों और आवश्यकताओं की उचित योजना और पहचान सटीक रूप से यह पहचानने का सबसे अच्छा तरीका है कि आपके आवेदन के लिए कौन से स्टोरेज इंजन सबसे उपयुक्त हैं। उम्मीद है, इस संबंध में आपकी मदद करने के लिए यह लेख एक उपयोगी प्रारंभिक बिंदु के रूप में कार्य करता है।

यह लेख मूल रूप से यहां प्रकाशित हुआ था। अनुमति के साथ पुनर्प्रकाशित। अपनी कॉपीराइट शिकायतें यहां सबमिट करें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. परिणाम प्राप्त करते समय अस्पष्ट कॉलम नामों को कैसे हल करें?

  2. क्या आप MySQL में WHERE क्लॉज में उपनाम का उपयोग कर सकते हैं?

  3. एकाधिक क्वेरी एक ही तालिका लेकिन अलग-अलग कॉलम में mysql

  4. Mysql:तालिका बनाते समय DATETIME के ​​प्रारूप को 'DD-MM-YYYY HH:MM:SS' पर सेट करें

  5. phpMyAdmin एक #2002 फेंक रहा है mysql सर्वर में लॉग इन नहीं कर सकता phpmyadmin