मुझे लगता है कि सबसे बड़ा गोटा ट्रांसकोडैनल होने के नाते निर्दोष होगा। आप जानना चाहेंगे कि क्या MySQL लाइब्रेरी आपके एप्लिकेशन द्वारा डिफ़ॉल्ट रूप से Auto_commit द्वारा उपयोग की जा रही है या नहीं।
उदाहरण के लिए, पायथन ऑटो कमिट नहीं करता है। इसका मतलब यह है कि यदि कोई एप्लिकेशन कनेक्शन बंद करने से पहले एक पंक्ति सम्मिलित कर रहा था, तो यह कनेक्शन है कि इन्सोडब में परिवर्तन करने के बाद अब सम्मिलित किया जाएगा। उदाहरण के लिए अजगर स्क्रिप्ट को कनेक्शन.कॉम () कहा जाना चाहिए;
अंतर का एक और बिंदु मल्टी रो इंसर्ट या अपडेट के आसपास हो सकता है। एक एकल बहु पंक्ति डालें पर विचार करें
insert into tbl values (...row1...), (...row2...), (...rowN....);
विचार करें कि क्या होता है अगर रो 3 पर एक अद्वितीय कुंजी टकराव जैसी किसी प्रकार की त्रुटि हो। MyISAM के साथ पहली दो पंक्तियों को लिखा गया होगा, अन्तर्निहित सभी पंक्तियों को लिखा जा रहा है, ऐसी त्रुटि के बावजूद कुछ भी नहीं लिखा हुआ छोड़ दिया जाएगा।
निर्दोष के साथ आप गतिरोध की दुनिया में प्रवेश करेंगे। ये स्वाभाविक रूप से बुरे नहीं हैं जब तक कि वे किसी भी काम को रोकने के लिए ऐसी आवृत्ति के साथ उत्पन्न नहीं होते हैं। हालाँकि, आपके अनुप्रयोगों को इस तरह से कोडित करने की आवश्यकता होगी, जैसे वे गतिरोधों का अनुमान लगाते हैं और उन्हें उचित रूप से संभालते हैं (जिसका अर्थ है कि केवल पुन: प्रयास करें)।
स्मृति / भंडारण सीमाओं पर विचार करें। Innodb, MyISAM की तुलना में अधिक संसाधन गहन है। यदि आपके पास अपने सभी तालिकाओं को समायोजित करने के लिए अपने बफर पूल को बड़ा रखने के लिए पर्याप्त रैम है तो आप सुनहरे हैं।
बड़ी प्राथमिक कुंजियों वाली तालिकाओं की तलाश करें। इनोडब के क्लस्टरिंग इंडेक्सिंग का अर्थ है कि प्रत्येक माध्यमिक इंडेक्स संबंधित पंक्ति के पीके की एक और प्रतिलिपि रखता है। यदि आपके पास 2 माध्यमिक इंडेक्स हैं जिसका अर्थ है कि प्रत्येक पंक्तियाँ पीके को 3 बार (पीके + प्रत्येक सूचकांक) संग्रहीत किया जाता है। यदि पीके कई स्तंभों और बड़े डेटाटाइप्स (उदाहरण के लिए (एन)) में फैला हुआ है, तो आप देख सकते हैं कि कैसे सूचकांक आवश्यकताओं को जल्दी से निर्दोष के तहत विस्फोट किया जा सकता है।