इससे पहले कि आप MyISAM या InnoDB पर फैसला करें, आपको प्रत्येक कैश के संदर्भ में संग्रहण इंजन दोनों पर देखना होगा
MyISAM
जब पढ़ा जाता है, तो एक MyISAM तालिका की अनुक्रमणिका को .MYI फ़ाइल से एक बार पढ़ा जा सकता है और MyISAM कुंजी कैश में लोड किया जाता है (जैसा कि key_buffer_size द्वारा आकार )। आप पढ़ने के लिए तेजी से एक MyISAM तालिका कैसे बना सकते हैं। इसके साथ:
ALTER TABLE mytable ROW_FORMAT=Fixed;
मैंने अपने पिछले पोस्ट्स में इस बारे में लिखा था
InnoDB
ठीक है, InnoDB के बारे में क्या? क्या InnoDB प्रश्नों के लिए कोई डिस्क I / O करता है? हैरानी की बात है, हाँ यह करता है !! आप शायद सोच रहे हैं कि मैं यह कहने के लिए पागल हूं, लेकिन यह बिल्कुल सही है, यहां तक कि SELECT क्वेरीज के लिए भी । इस बिंदु पर, आप शायद सोच रहे हैं "कैसे दुनिया में इनोबीडी डिस्क I / O प्रश्नों के लिए कर रहा है?"
यह सब एक ACID -complaint Transactional Storage Engine के रूप में InnoDB पर वापस जाता है । InnoDB के लिए आदेश की लेन-देन होने के लिए, यह समर्थन किया है I
में ACID
है, जो अलगाव है। लेनदेन के लिए अलग-थलग बनाए रखने की तकनीक MVCC, मल्टीवर्जन कॉनकरी कंट्रोल के माध्यम से की जाती है । सरल शब्दों में, InnoDB रिकॉर्ड करता है कि लेनदेन को बदलने से पहले डेटा कैसा दिखता है। कहाँ दर्ज किया जाता है? सिस्टम टेबलस्पेस फाइल में, जिसे ibdata1 के रूप में जाना जाता है। इसके लिए डिस्क I / O की आवश्यकता होती है ।
तुलना
चूंकि InnoDB और MyISAM दोनों डिस्क I / O करते हैं, इसलिए कौन से यादृच्छिक कारक तेज होते हैं?
- स्तंभों का आकार
- कॉलम प्रारूप
- चरित्र सेट
- न्यूमेरिकल वैल्यूज़ की सीमा (बड़े पर्याप्त INT की आवश्यकता होती है)
- ब्लॉक होने के कारण पंक्तियाँ
- डेटा विखंडन के कारण
DELETEs
औरUPDATEs
- प्राथमिक कुंजी का आकार (InnoDB में एक क्लस्टर इंडेक्स है, जिसमें दो प्रमुख लुक की आवश्यकता होती है)
- सूचकांक प्रविष्टियों का आकार
- सूची चलती जाती है...
उपसंहार
इस प्रकार, एक भारी-भरकम वातावरण में, यह संभव है कि माईसम तालिका के लिए एक निश्चित पंक्ति प्रारूप के साथ इनपरफॉर्म इनओबीडी इनोफीडी बफ़र पूल से बाहर निकले, अगर वहाँ पर्याप्त डेटा में लिखा जा रहा हो, जो व्यवहार व्यवहार का समर्थन करने के लिए आईबीडीटा 1 के भीतर मौजूद पूर्व लॉग में लिखा गया हो। InnoDB डेटा पर लगाया गया। अपने डेटा प्रकार, क्वेरीज़ और स्टोरेज इंजन को वास्तविक रूप से ध्यान से देखें। एक बार जब डेटा बढ़ता है, तो डेटा को स्थानांतरित करना बहुत मुश्किल हो सकता है।
वैसे, मैंने 5 दिन पहले ऐसा कुछ लिखा था: मैं mySQL के लिए मेमोरी लिमिट कैसे असाइन करूं?