एक डेटाबेस मान लें जिसमें 1 जीबी डेटा और 1 जीबी इंडेक्स डेटा शामिल है।मेमोरी में डेटा प्लस इंडेक्स-डेटा रखना - इनो डीबी बनाम मायिसैम
डिस्क IO को कम करने के लिए और इसलिए प्रदर्शन को अधिकतम करने के लिए मैं माईएसQL को मेमोरी आवंटित करना चाहता हूं ताकि इंडेक्स समेत संपूर्ण डेटासेट को रैम में रखा जा सके (मान लें कि मशीन में बहुतायत में रैम है)।
इनो डीबी पैरामीटर innodb_buffer_pool_size
मेमोरी बफर इनो डीबी के आकार को निर्दिष्ट करने के लिए प्रयोग किया जाता है ताकि डेटा और उसके टेबल के इंडेक्स को कैश किया जा सके। (नोट: स्मृति डेटा और अनुक्रमित के लिए प्रयोग किया जाता है।)
MyISAM पैरामीटर key_buffer_size
स्मृति बफर MyISAM के आकार निर्दिष्ट करने के लिए प्रयोग किया जाता है इसके टेबल के कैश अनुक्रमित करने के लिए उपयोग करता है। (नोट: स्मृति केवल प्रयोग किया जाता है अनुक्रमित के लिए।)
अगर मैं 2 जीबी डेटाबेस (1 जीबी डेटा और 1 जीबी इंडेक्स) चाहते InnoDB के तहत स्मृति में फिट करने के लिए, मैं बस innodb_buffer_pool_size
कॉन्फ़िगर कर होने के लिए 2GB
। दो गीगाबाइट डेटा और इंडेक्स दोनों रखेंगे।
हालांकि, MyISAM कुंजी key_buffer_size
से 2GB
पर सेट करते समय उस स्थान का उपयोग सूचकांक के लिए किया जाएगा, लेकिन डेटा के लिए नहीं।
मेरे प्रश्न हैं:
- MyISAM के "डेटा बफर आकार" (नहीं सूचकांक डेटा) स्पष्ट रूप से नियोजित जा सकता है?
- MyISAM डिस्क से तालिका डेटा (अनुक्रमणिका डेटा को छोड़कर) कब पढ़ेगा और यह स्मृति से कब पढ़ेगा?