2010-11-20 18 views
48

मैंने चारों ओर देखा और पाया कि कुछ MySQL इंजन innodb और MyISAM हैं। शायद कुछ और हैं। मेरा सवाल यह है कि ये डेटाबेस इंजन क्या हैं?MySQL डेटाबेस इंजन क्या हैं?

विभिन्न MySQL इंजनों के बीच अंतर क्या हैं? और सबसे महत्वपूर्ण बात यह है कि मैं कैसे तय करूं कि किस का उपयोग करना है?

+1

संबंधित: http://serverfault.com/questions/219/how-do-you-choose-a-mysql-database-engine –

उत्तर

51
mysql> SHOW ENGINES; 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
| Engine  | Support | Comment              | Transactions | XA | Savepoints | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
| InnoDB  | YES  | Supports transactions, row-level locking, and foreign keys  | YES   | YES | YES  | 
| MRG_MYISAM | YES  | Collection of identical MyISAM tables       | NO   | NO | NO   | 
| BLACKHOLE | YES  | /dev/null storage engine (anything you write to it disappears) | NO   | NO | NO   | 
| CSV  | YES  | CSV storage engine            | NO   | NO | NO   | 
| MEMORY  | YES  | Hash based, stored in memory, useful for temporary tables  | NO   | NO | NO   | 
| FEDERATED | NO  | Federated MySQL storage engine         | NULL   | NULL | NULL  | 
| ARCHIVE | YES  | Archive storage engine           | NO   | NO | NO   | 
| MyISAM  | DEFAULT | Default engine as of MySQL 3.23 with great performance   | NO   | NO | NO   | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 

मैं व्यक्तिगत रूप से हमेशा InnoDB का उपयोग मैं MySQL का उपयोग करने के है। यह लेनदेन और विदेशी कुंजी का समर्थन करता है जबकि MyISAM नहीं करता है।

31

माईसाम और इनो डीबी सबसे अधिक इस्तेमाल किए जाने वाले इंजन हैं।

माईसैम InnoDB से थोड़ा तेज है, और FULLTEXT अनुक्रमणिका लागू करता है जो खोज क्षमताओं को एकीकृत करने के लिए काफी उपयोगी है। माईसाम लेनदेन नहीं किया गया है और विदेशी कुंजी बाधाओं को लागू नहीं करता है, जो एक बड़ी कमी है।

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

यदि मैं आप थे, तो मैं इनो को चुनूंगा, क्योंकि यह सबसे विश्वसनीय है। यदि आपको आवश्यकता हो तो केवल विशिष्ट उद्देश्यों के लिए MyISAM का उपयोग करें।

नई टेबल बनाने के दौरान आप डिफ़ॉल्ट रूप से InnoDB का उपयोग करने के लिए अपने डेटाबेस को कॉन्फ़िगर कर सकते हैं।

9

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

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

This Image provides an overview of some storage engines provided with MySQL:

29

संग्रहण इंजन MySQL घटक है कि अलग अलग टेबल प्रकार के लिए एसक्यूएल संचालन संभाल रहे हैं। InnoDB डिफ़ॉल्ट है (v5.7 के लिए) और सबसे सामान्य उद्देश्य स्टोरेज इंजन। MySQL स्टोरेज इंजन में वे दोनों शामिल हैं जो लेन-देन-सुरक्षित तालिकाओं और nontransaction-safe तालिकाओं को संभालते हैं।

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

  1. InnoDB: InnoDB एक लेन-देन सुरक्षित (एसिड अनुरूप) भंडारण MySQL के लिए, प्रतिबद्ध रोलबैक, और क्रैश-वसूली की क्षमताओं उपयोगकर्ता डेटा की रक्षा करने के लिए है कि इंजन है। इनो डीबी पंक्ति-स्तर लॉकिंग (कोसर ग्रैन्युलरिटी लॉक में वृद्धि के बिना) और ओरेकल-शैली लगातार नॉनलाकिंग पढ़ने से बहु-उपयोगकर्ता समवर्तीता और प्रदर्शन बढ़ता है।InnoDB क्लस्टर इंडेक्स में उपयोगकर्ता डेटा को प्राथमिक कुंजी के आधार पर सामान्य प्रश्नों के लिए I/O को कम करने के लिए संग्रहीत करता है। डेटा अखंडता को बनाए रखने के लिए, InnoDB विदेशी कुंजी संदर्भ-अखंडता बाधाओं का भी समर्थन करता है। इनो डीबी के बारे में अधिक जानकारी के लिए, अध्याय 14, इनो डीबी स्टोरेज इंजन देखें।

  2. MyISAM: इन तालिकाओं में एक छोटा पदचिह्न है। टेबल-स्तरीय लॉकिंग पढ़ने/लिखने वाले वर्कलोड में प्रदर्शन को सीमित करती है, इसलिए इसे अक्सर वेब-डेटा वेयरहाउसिंग कॉन्फ़िगरेशन में केवल पढ़ने के लिए या अधिकतर वर्कलोड में उपयोग किया जाता है।

  3. Memory: वातावरण में तेज़ पहुंच के लिए रैम में सभी डेटा स्टोर करता है जिसके लिए गैर-महत्वपूर्ण डेटा के त्वरित लुकअप की आवश्यकता होती है। इस इंजन को पहले ही हेप इंजन के रूप में जाना जाता था। इसके उपयोग के मामलों में कमी आ रही है; इन बफर पूल मेमोरी एरिया के साथ InnoDB स्मृति में अधिकांश या सभी डेटा रखने के लिए एक सामान्य उद्देश्य और टिकाऊ तरीका प्रदान करता है, और एनडीबीसीएलस्टर विशाल वितरित डेटा सेट के लिए तेज़ कुंजी-मूल्य लुकअप प्रदान करता है।

  4. CSV: इसकी सारणी वास्तव में अल्पविराम से अलग मूल्यों वाली टेक्स्ट फ़ाइलें हैं। सीएसवी टेबल आपको उसी प्रारूप को पढ़ने और लिखने वाली स्क्रिप्ट और एप्लिकेशन के साथ डेटा का आदान-प्रदान करने के लिए, CSV प्रारूप में डेटा आयात या डंप करने देता है। चूंकि सीएसवी टेबल अनुक्रमित नहीं होते हैं, इसलिए आप आम तौर पर सामान्य ऑपरेशन के दौरान इनो डीबी टेबल में डेटा रखते हैं, और केवल आयात या निर्यात चरण के दौरान सीएसवी टेबल का उपयोग करते हैं।

  5. Archive: इन कॉम्पैक्ट, unindexed तालिकाओं भंडारण और शायद ही कभी-संदर्भित ऐतिहासिक, संग्रहीत, या सुरक्षा लेखापरीक्षा जानकारी की बड़ी मात्रा में पुन: प्राप्त करने के लिए करना है।

  6. Blackhole: ब्लैकहोल स्टोरेज इंजन स्वीकार करता है लेकिन यूनिक्स/देव/शून्य डिवाइस के समान डेटा स्टोर नहीं करता है। प्रश्न हमेशा एक खाली सेट लौटते हैं। इन तालिकाओं को प्रतिकृति विन्यास में उपयोग किया जा सकता है जहां डीएमएल कथन गुलाम सर्वर को भेजे जाते हैं, लेकिन मास्टर सर्वर डेटा की अपनी प्रति नहीं रखता है।

  7. NDB (जिसे एनडीबीसीएलस्टर के रूप में भी जाना जाता है): यह क्लस्टर डेटाबेस इंजन विशेष रूप से उन अनुप्रयोगों के लिए उपयुक्त है जिनके लिए उच्चतम संभावित डिग्री और उपलब्धता की आवश्यकता होती है।

  8. Merge: एक MySQL डीबीए या डेवलपर तार्किक करने के लिए समूह समान MyISAM तालिकाओं की एक श्रृंखला में सक्षम बनाता है और उन्हें एक वस्तु के रूप में संदर्भित करते हैं। डेटा वेयरहाउसिंग जैसे वीएलडीबी वातावरण के लिए अच्छा है।

  9. Federated: कई भौतिक सर्वरों से एक लॉजिकल डेटाबेस बनाने के लिए अलग MySQL सर्वर को जोड़ने की क्षमता प्रदान करता है। वितरित या डेटा मार्ट वातावरण के लिए बहुत अच्छा है।

  10. Example: यह इंजन MySQL स्रोत कोड में एक उदाहरण के रूप में कार्य करता है जो दिखाता है कि नए स्टोरेज इंजन कैसे लिखना शुरू करें। यह मुख्य रूप से डेवलपर्स के लिए ब्याज का है। स्टोरेज इंजन एक "स्टब" है जो कुछ भी नहीं करता है। आप इस इंजन के साथ टेबल बना सकते हैं, लेकिन उनमें से कोई भी डेटा संग्रहीत नहीं किया जा सकता है या उनसे पुनर्प्राप्त नहीं किया जा सकता है।

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

संदर्भ: https://en.wikipedia.org/wiki/Database_engine

एक डेटाबेस इंजन (या भंडारण इंजन) अंतर्निहित सॉफ़्टवेयर घटक है जो डेटाबेस प्रबंधन प्रणाली है: 12

enter image description here

+0

इस उत्तर का नवीनतम संस्करण के लिए कृपया उस पृष्ठ का संदर्भ लें जहां से इसकी प्रतिलिपि बनाई गई है: http://dev.mysql.com/doc/refman/5.7/en/storage-engines.html – GolezTrol

1

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

2

एक स्टोरेज इंजन एक सॉफ्टवेयर मॉड्यूल है जो एक डेटाबेस प्रबंधन प्रणाली डेटाबेस से डेटा बनाने, पढ़ने, अद्यतन करने के लिए उपयोग करता है। MySQL में दो प्रकार के स्टोरेज इंजन हैं: लेनदेन और गैर-लेनदेन। MySQL 5.5 और बाद में, डिफ़ॉल्ट स्टोरेज इंजन InnoDB है। संस्करण 5.5 से पहले MySQL के लिए डिफ़ॉल्ट स्टोरेज इंजन MyISAM था। सही भंडारण इंजन का चयन करना एक महत्वपूर्ण रणनीतिक निर्णय है, जो भविष्य के विकास को प्रभावित करेगा। इस ट्यूटोरियल में, हम माईसाम, इनो डीबी, मेमोरी और सीएसवी स्टोरेज इंजन का उपयोग करेंगे। यदि आप MySQL के लिए नए हैं और आप MySQL डेटाबेस प्रबंधन प्रणाली का अध्ययन कर रहे हैं, तो यह चिंता का विषय नहीं है। यदि आप उत्पादन डेटाबेस की योजना बना रहे हैं, तो चीजें अधिक जटिल हो जाती हैं। आप यहाँ और अधिक पढ़ सकते हैं: http://zetcode.com/databases/mysqltutorial/storageengines/

संबंधित मुद्दे