ठीक है, आपके प्रश्न के अनुसार, InnoDB को काम करना चाहिए क्योंकि:
- इसकी मापनीयता MyISAM से काफी बेहतर है
- यह रो-लॉकिंग है, इसलिए यदि आपके पास चयन से अधिक लिखने जा रहे हैं, तो यह बेहतर फिट बैठता है।
- आखिरकार, चूंकि आपने कहा था कि उन्हें शायद ही कभी एक्सेस किया जाएगा, MyISAM की कोई आवश्यकता नहीं है क्योंकि यह चुनिंदा प्रश्नों पर बेहतर है।
अधिक जानकारी के लिए इसे देखेंए>
संपादित करें
खैर, कमेंट में आप दूसरे इंजन के बारे में पूछें। यह रही एक पूरी सूची इंजनों की। उनमें से, जैसा कि आपने कहा था कि संग्रह में नुकसान है, अन्य आपके अनुरोध के अनुरूप नहीं हैं। यहाँ MySQL वेबसाइट से एक उद्धरण है:
InnoDB has been designed for maximum performance when processing large data volumes.
Its CPU efficiency is probably not matched by any other disk-based relational database
engine.
तो मूल रूप से:
- यदि आप MEMORY का उपयोग करने जा रहे हैं, जैसा कि आपने कहा था कि आप डेटा तक बहुत अधिक पहुंच नहीं पाएंगे और आपकी तालिका बहुत अधिक बढ़ जाएगी। इसके लिए आपको बहुत अधिक RAM की आवश्यकता होगी और जब आप रीबूट करेंगे तो सारा डेटा नष्ट हो जाएगा।
- यदि आप MyISAM का उपयोग करने जा रहे हैं, तो ऐसा न करें क्योंकि यह उन तालिकाओं के लिए डिज़ाइन किया गया है, जो चुनिंदा क्वेरीज़ डालने और अपडेट करने की तुलना में अधिक बार होती हैं।
- संग्रह के लिए, यह आपकी पसंद है। यहां एक लॉग टेबल के लिए MyISAM और संग्रह के बीच तुलना है। हालांकि मैं InnoDB से जुड़ा रहूंगा।
- मैं मर्ज, ब्लैकहोल, उदाहरण और अन्य इंजनों का भी उल्लेख नहीं करूंगा। (मुझे सीएसवी इंजन के बारे में ज्यादा जानकारी नहीं है लेकिन जहां तक मैंने पढ़ा है, यह इस तरह की तालिका के लिए उपयुक्त इंजन नहीं है।
सच कहूं तो मैं कोडिंग में एक महत्वपूर्ण कदम उठाने से पहले काफी समय बिताता था। मैंने घंटों तक शोध किया, शायद दिनों के लिए किसी मुद्दे के बारे में यह देखने के लिए कि कौन सा तरीका सबसे उपयुक्त है। मैं आपको बताता हूँ क्या, शोध करना अच्छा है, लेकिन एक बिंदु के बाद अगर यह आपको काम करने से रोकता है तो आपको रुक जाना चाहिए, एक कॉफी पीना चाहिए, और तुरंत अपनी पसंद बनाना चाहिए। इसलिए, बस अपने लिए सबसे उपयुक्त प्रयास करें और जैसा कि आप अनुभव करेंगे, आप स्वयं को आजमाकर और भी बेहतर तरीका खोज लेंगे। मेरा मतलब है, मुझे विश्वास नहीं है कि फेसबुक को इतनी मात्रा के लिए डिज़ाइन किया गया था, लेकिन जैसे-जैसे यह बढ़ता गया, उन्होंने संरचना को तदनुसार बदलना जारी रखा। हालांकि मेरा मानना है कि यह वास्तविकता नहीं हो सकती है :) वैसे भी, आशा है कि जानकारी आपकी मदद करेगी।
संपादित करें 2013
नीचे आपको अंतर्निहित MySQL स्टोरेज इंजन के लिए संक्षिप्त विवरण मिलेगा।
मायसाम
इन तालिकाओं में अतिरिक्त अनुकूलन शामिल हैं, जैसे उन्नत कैश और अनुक्रमण तंत्र, जो डेटा तक तेजी से पहुंच प्रदान करते हैं। टेबल-लेवल लॉकिंग का उपयोग करते हुए, MyISAM स्टोरेज इंजन समवर्ती संचालन प्रदान करता है। जब पठन प्रदर्शन एक चिंता का विषय होता है, तो आम तौर पर, MyISAM विकल्प होता है।
स्मृति
इसे हीप टेबल भी कहा जाता है, मेमोरी टेबल अक्सर उपयोग किए जाने वाले डेटा की तेजी से पुनर्प्राप्ति के लिए आदर्श होते हैं जिन्हें शायद ही कभी बदला जाता है (जैसे देश कोड, ज़िप कोड या अन्य लुकअप टेबल)। जैसा कि नाम से पता चलता है, डेटा मेमोरी में संग्रहीत होता है और इसलिए डिस्क में संग्रहीत डेटा की तुलना में एक्सेस बहुत तेज होता है। मेमोरी का उपयोग करने के लिए एक महत्वपूर्ण प्रतिबंध यह है कि डेटा MySQL सत्र के दौरान मान्य है। जब यह क्रैश हो जाता है, या बंद हो जाता है तो डेटा खो जाता है।
InnoDB
एक मामला जहां आपको इस स्टोरेज इंजन का उपयोग करना होगा, जब आपको विदेशी कुंजी या लेनदेन का उपयोग करने की आवश्यकता होती है। InnoDB MyISAM की तुलना में अधिक समवर्ती है क्योंकि यह पंक्ति-स्तरीय लॉकिंग प्रदान करता है। भंडारण इंजन अत्यधिक विश्वसनीय है। एक और मामला जब आप इस भंडारण का उपयोग करना चाहेंगे, जब आपके पास पढ़ने की तुलना में अधिक लिखना होगा। जब आप अक्सर तालिका में डेटा लिखते हैं तो इस संग्रहण का उपयोग करने का प्रयास करें क्या यह MyISAM से अधिक समवर्ती है।
संग्रह करें
यह एक संपीड़ित प्रारूप में बड़ी मात्रा में डेटा संग्रहीत करने के लिए डिज़ाइन किया गया है। इस भंडारण इंजन के उपयोग के मामलों में से एक अभिलेखीय या ऐतिहासिक डेटा या सुरक्षा लॉग को संग्रहीत करना है। तालिका कोई अनुक्रमणिका का उपयोग नहीं करती है इसलिए दैनिक डेटा पुनर्प्राप्ति और भंडारण के लिए यह एक अच्छा विकल्प नहीं है। यह रो-लेवल लॉकिंग है और मांग किए जाने पर डेटा फ्लाई पर असम्पीडित होता है। इसके अलावा, तालिका को बदलना संभव नहीं है।
मर्ज करें
मर्ज का उपयोग विभाजित तालिकाओं को 'मर्ज' करने के लिए किया जाता है जो एक ही मशीन पर रहते हैं। जब आप एक बड़ी तालिका को कई छोटी तालिकाओं में विभाजित करते हैं, और मर्ज-टेबल का उपयोग करके एक साथ उन तक पहुंचते हैं, तो सबसे बड़ा लाभ इसकी गति है। तालिकाओं में कम डेटा होने के कारण खोज और प्रकार तेजी से निष्पादित होंगे।