किसी ने मुझे अभी बताया कि InnoDB MyISAM से काफी बेहतर है। तो जब मैं एक टेबल बनाता हूं, तो क्या मुझे हमेशा MyISAM के बजाय InnoDB इंजन का उपयोग करने का प्रयास करना चाहिए? या दोनों के पास इसका बड़ा लाभ है?क्या मुझे हमेशा MyISQL पर MySQL InnoDB पसंद करना चाहिए?
उत्तर
MyISAM
लेनदेन रहित और ढेर-संगठित है। रिकॉर्ड तालिका में पंक्ति ऑफसेट द्वारा पहचाने जाते हैं और इंडेक्स इस ऑफसेट को पंक्ति सूचक के रूप में संग्रहीत करते हैं।
InnoDB
लेनदेन का समर्थन करता है और सूचकांक-संगठित है। रिकॉर्ड PRIMARY KEY
के मूल्य से पहचाने जाते हैं (या एक छुपा आंतरिक कॉलम है PRIMARY KEY
परिभाषित नहीं है) और B-Tree
में संग्रहीत हैं। द्वितीयक अनुक्रमणिका एक पंक्ति सूचक के रूप में PRIMARY KEY
का मान संग्रहीत करती हैं।
क्वेरीज़ जिनमें पूर्ण तालिका स्कैन या माध्यमिक अनुक्रमणिका लुकअप शामिल हैं, आमतौर पर MyISAM
टेबल पर तेज़ होते हैं।
PRIMARY KEY
पूछताछ वाली क्वेरी आमतौर पर InnoDB
टेबल पर तेज़ होती हैं।
MyISAM
टेबल तालिका के मेटाडेटा में तालिका में अभिलेखों की संख्या की दुकान, तो इस कारण इस तरह के प्रश्नों:
SELECT COUNT(*)
FROM myisamtable
तत्काल कर रहे हैं।
MyISAM
टेबल पूरी तरह से DML
संचालन (कई अपवादों के साथ) पर बंद कर दिए गए हैं।
InnoDB
टेबल व्यक्तिगत रिकॉर्ड और इंडेक्स अंतराल को लॉक करते हैं, हालांकि ये स्कैन किए गए रिकॉर्ड और अंतराल हैं, न केवल WHERE
स्थिति से मेल खाते हैं। यह उन तथ्यों के बावजूद रिकॉर्ड लॉक हो सकता है जो वे मेल नहीं खाते हैं।
InnoDB
टेबल रेफरेंसियल अखंडता का समर्थन करते हैं (FOREIGN KEY
एस)। MyISAM
टेबल नहीं है।
कई परिदृश्य हैं जो दोनों इंजनों के लाभ दिखा सकते हैं।
यह बस डाल करने के लिए:
आप InnoDB का उपयोग करना चाहिए:
- आप लेन-देन समर्थन
- की जरूरत है अगर आप विदेशी कुंजी जरूरत
आप का उपयोग करना चाहिए MyISAM:
- यदि आप उपरोक्त AND
- आप की जरूरत गति (तेज़ डेटाबेस कार्यों)
आप इस http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/ को गति के बारे में पढ़ना चाहेंगे। –
IMHO आप हमेशा व्यवहार समर्थन है जो हर रिलेशनल डाटाबेस सिस्टम के मूल में है की वजह से MyISAM
से अधिक InnoDB
को प्राथमिकता देनी चाहिए जरूरत नहीं है।
इनो डीबी एक पूरी तरह से एसीआईडी अनुपालन डेटाबेस इंजन है और इसलिए लेनदेन के लिए समर्थन प्रदान करता है, इसलिए, यह इसलिए MyISAM डेटाबेस से धीमा हो सकता है जो एक अलग दिशा में अनुकूलित किया जाता है।
इसलिए यदि आपको लेन-देन की आवश्यकता है तो InnoDB (या PostgreSQL जैसे अन्य आरडीबीएमएस) स्पष्ट विकल्प है।
आप दोनों का उपयोग कर सकते Wikipedia
पर एक उचित तुलना से अधिक नहीं है। आप अपने लेखन डेटाबेस/लेनदेन के लिए InnoDB का उपयोग कर सकते हैं, लेकिन एक MyISAM डेटाबेस से वापस पढ़ें, जो denormalized है। यह दोनों दुनिया के सर्वश्रेष्ठ प्रदान करता है। आप जानते हैं कि आप इनओडीबी से संदर्भित अखंडता के साथ डेटा सुरक्षित हैं, और आप जितनी जल्दी चाहें इसे पढ़ सकते हैं जैसे आप माईसाम के साथ चाहते हैं।
क्या आप दोनों इंजनों का उपयोग करने के तरीके पर एक लिंक का उल्लेख कर सकते हैं – Amareswar
सरल उत्तर: नहीं, आपको नहीं करना चाहिए।
प्रत्येक इंजन के बारे में कुछ अंक:
InnoDB
- विदेशी कुंजी मजबूरी और लेन-देन के लिए पूर्ण समर्थन। (एसीआईडी अनुपालन)
- पंक्ति-स्तर लॉकिंग।
- तर्कसंगत रूप से तेजी से INSERT बयान। (और संभवतः भी अपडेट)
MyISAM
- तेज़ SELECT स्टेटमेंट्स। पूर्ण पाठ के लिए
- समर्थन खोज
- ब्लॉब और पाठ स्तंभ
- 4x अधिकतम संग्रहण सीमा अनुक्रमित किया जा सकता, InnoDB (256TB बनाम 64TB) की तुलना में
मैनुअल में अधिक देखें:
- 1. Entitymanager.flush() वीएस EntityManager.getTransaction() प्रतिबद्ध - मुझे क्या पसंद करना चाहिए?
- 2. क्या मुझे हमेशा GL_CULL_FACE का उपयोग करना चाहिए?
- 3. मुझे क्या करना चाहिए?
- 4. क्या मुझे संदर्भक्यू पर सिंक्रनाइज़ करना चाहिए?
- 5. MySQL InnoDB डेटाबेस पुनर्स्थापित
- 6. MySQL - InnoDB MyISAM
- 7. क्या मुझे MySQL के बजाय NoSQL का उपयोग करना चाहिए?
- 8. क्या मुझे PHP में mysql से पुनः कनेक्ट करना चाहिए?
- 9. क्या मुझे पढ़ने या लिखने के लिए एक मेमोरी एक्सेस पसंद करना चाहिए?
- 10. क्या मुझे म्यूटेक्स का निपटान करना चाहिए?
- 11. मुझे क्या gacutil.exe का उपयोग करना चाहिए?
- 12. क्या मुझे हमेशा कॉल करना चाहिए। LINQ क्वेरी परिणामों पर ToArray फ़ंक्शन में लौटाया गया है?
- 13. मुझे वेब से फ़ाइलों को डाउनलोड करने के लिए NSRLConnection पर ASIHTTPRequest क्यों पसंद करना चाहिए?
- 14. त्रुटि बनाने पर, क्या मुझे 'नया' प्रस्तुत करना चाहिए या 'नया' पर रीडायरेक्ट करना चाहिए?
- 15. mysql innodb बनाम myisam प्रविष्टियां
- 16. क्या मुझे स्कैला का अध्ययन करना चाहिए?
- 17. MySQL में InnoDB और MyISAM क्या है?
- 18. InnoDB
- 19. mysql डिफ़ॉल्ट इंजन को innodb
- 20. क्या मुझे jQuery.each() का उपयोग करना चाहिए?
- 21. क्या मुझे हमेशा अपनी विधियों को यथासंभव स्थिर बनाना चाहिए?
- 22. क्या मुझे सिम्बियन ओएस पर विकसित करना सीखना चाहिए?
- 23. क्या मुझे साझा होस्टिंग पर web.config एन्क्रिप्ट करना चाहिए?
- 24. क्या मुझे अपने डीएलएल पर हस्ताक्षर करना चाहिए?
- 25. क्या मुझे jQuery.inArray() का उपयोग करना चाहिए?
- 26. क्या मुझे std :: stringstream preallocate करना चाहिए?
- 27. मुझे MySQL संपीड़ित प्रोटोकॉल का उपयोग कब करना चाहिए?
- 28. PHP/MySQL में क्या मुझे एकाधिक डेटाबेस कनेक्शन खोलना चाहिए या 1 साझा करना चाहिए?
- 29. क्या मुझे मार्कडाउन को स्वच्छ करना चाहिए?
- 30. सी # लॉगिंग। मुझे क्या उपयोग करना चाहिए?
http://www.mikebernat.com/blog/MySQL_-_InnoDB_vs_MyISAM –
नहीं; दोनों के पास इसका लाभ है। – philfreo