2010-01-05 10 views
5

हम एक सोशल नेटवर्किंग साइट चला रहे हैं जो प्रत्येक सदस्य की कार्रवाई लॉग करता है (अन्य सदस्य के पृष्ठों पर जाकर); इसमें डीबी को बहुत सारे लिखने शामिल हैं। ये क्रियाएं माईसाम टेबल में संग्रहीत होती हैं और चूंकि कुछ सीपीयू पर कर लगाना शुरू कर देता है, मेरा पहला विचार यह था कि यह माईसाम की टेबल लॉकिंग है जो इस तनाव को सीपीयू पर कर रही है।MyISAM को InnoDB में कनवर्ट करना। फायदेमंद? परिणाम?

  • केवल पढ़ने और लिखते हैं, इस तालिका में कोई अपडेट नहीं है। मुझे लगता है कि इस तालिका के लिए पढ़ने और लिखने के बीच संतुलन लगभग 50/50 है, तो क्या InnoDB बेहतर विकल्प होगा?
  • यदि मैं तालिका को InnoDB में बदलना चाहता हूं और हम विदेशी कुंजी बाधाओं, लेनदेन या पूर्ण टेक्स्ट इंडेक्स का उपयोग नहीं करते हैं - क्या मुझे किसी चीज़ के बारे में चिंता करने की ज़रूरत है?
+0

http://stackoverflow.com/questions/20148/myisam-versus-innodb – Bozho

+0

यह उपरोक्त का डुप्लिकेट नहीं है, क्योंकि यह प्रति से लाभ के बजाय माइग्रेशन से संबंधित है। – MarkR

+0

आप टेबल के मिश्रण का भी उपयोग कर सकते हैं, लॉग के लिए रीड-हेवी टेबल और इनो डीबी के लिए माईसाम को रख सकते हैं। हालांकि, मैं व्यक्तिगत रूप से आज भी कुछ भी के लिए माईसाम का उपयोग नहीं करता (केवल पूर्ण टेक्स्ट खोजबेट)। – bobince

उत्तर

7

इसके उपयोग के किसी भी लाभ/दोष के बावजूद, अन्य धागे (MyISAM versus InnoDB) में चर्चा की जाती है, माइग्रेशन एक अनौपचारिक प्रक्रिया है।

पर विचार करें

  • कार्यात्मक सभी घटकों को जो डेटाबेस यदि संभव हो तो से बात का परीक्षण - अंतर इंजन अलग अर्थ विज्ञान
  • के रूप में ज्यादा निष्पादन परीक्षण चल रहा है है के रूप में आप कर सकते हैं - कुछ चीजें सुधार हो सकता है, दूसरों को भी बदतर हो सकता है । एक प्रसिद्ध उदाहरण एक बड़ी तालिका पर SELECT COUNT (*) है।
  • यह जांचकर कि आपका पूरा कोड डेडलॉक्स को अच्छी तरह से संभाल लेगा - आप उन्हें लेनदेन के स्पष्ट उपयोग के बिना प्राप्त कर सकते हैं
  • अनुमान लगाएं कि आप कनवर्ट करके कितना अंतरिक्ष उपयोग करेंगे - यह एक गैर-उत्पादन वातावरण में परीक्षण करें।

आपको किसी बड़े सॉफ्टवेयर प्लेटफ़ॉर्म में चीजों को बदलने की आवश्यकता नहीं होगी; यह ठीक है, लेकिन आप (उम्मीद है) के रूप में देखकर बहुत सारे ऑटो-टेस्ट कवरेज हैं, परिवर्तन स्वीकार्य होना चाहिए।

पीएस: यदि "कुछ सीपीयू कर लगाने शुरू हो रहा है", तो आपको पता होना चाहिए कि एक गैर-उत्पादन वातावरण में, क्या पता लगाएं, बी) गैर-उत्पादन वातावरण में इसे कम करने के लिए विभिन्न विकल्पों का प्रयास करें। जब आपने समस्या का पूरी तरह से विश्लेषण नहीं किया है तो आपको अंधेरे से डेटाबेस फ़ाइलों को बदलने जैसे अंधाधुंध करना शुरू नहीं करना चाहिए।

सभी प्रदर्शन परीक्षण गैर-उत्पादन वातावरण में, उत्पादन-जैसे डेटा और उत्पादन-ग्रेड हार्डवेयर पर किया जाना चाहिए। अन्यथा परिणामों को सही ढंग से समझना मुश्किल है।

+1

इस जानकारी के लिए बहुत बहुत धन्यवाद। क्या आप "विभिन्न अर्थशास्त्र" पर विस्तार कर सकते हैं? – stef

2

मुझे लगता है कि यह संभव है कि इनो डीबी में स्विच करने से प्रदर्शन में सुधार होगा, लेकिन मेरे अनुभव में, आप वास्तव में तब तक सुनिश्चित नहीं हो सकते जब तक कि आप इसे आजमाएं। अगर मैं आप थे, तो मैं एक ही सर्वर पर एक परीक्षण वातावरण स्थापित करता हूं, इनो डीबी में परिवर्तित करता हूं और बेंचमार्क चलाता हूं।

4

के साथ अन्य संभावित प्रवास समस्याओं के संबंध:

1) अंतरिक्ष - InnoDB टेबल अक्सर, अधिक डिस्क स्थान की आवश्यकता होती है, हालांकि InnoDB के नए संस्करणों के लिए बाराकुडा फ़ाइल स्वरूप अंतर संकुचित है। आप टेबल के हालिया बैकअप को परिवर्तित करके और आकार की तुलना करके इसके लिए एक समझ प्राप्त कर सकते हैं। डेटा लंबाई की तुलना करने के लिए "तालिका तालिका दिखाएं" का उपयोग करें।

2) पूर्ण पाठ खोज - केवल MyISAM पर

3) जीआईएस/स्थानिक डेटाटाइप्स - केवल MyISAM

प्रदर्शन पर पर, अन्य उत्तर और संदर्भित जवाब से संकेत मिलता है के रूप में, यह आपके काम का बोझ पर निर्भर करता है। MyISAM पूर्ण तालिका स्कैन के लिए बहुत तेज़ है। अत्यधिक समवर्ती पहुंच के लिए InnoDB बहुत तेज हो जाता है। यदि आपका लुकअप प्राथमिक कुंजी पर आधारित है तो InnoDB भी तेज़ हो सकता है।

एक और प्रदर्शन मुद्दा यह है कि माईसाम हमेशा पंक्ति गणना रख सकता है, क्योंकि यह केवल टेबल स्तर लॉकिंग करता है। इसलिए, यदि आप अक्सर एक बहुत बड़ी मेज के लिए पंक्ति गणना प्राप्त करने का प्रयास कर रहे हैं, तो यह InnoDB के साथ बहुत धीमा हो सकता है। यदि आपको इसके लिए वर्कअराउंड की आवश्यकता है तो इंटरनेट पर खोजें, क्योंकि मैंने कई प्रस्तावित देखा है।

तालिका के आकार के आधार पर, आपको अपनी MySQL कॉन्फ़िगरेशन फ़ाइल को अपडेट करने की भी आवश्यकता हो सकती है। कम से कम, आप key_buffer से innodb_buffer_pool_size में बाइट्स को स्थानांतरित करना चाहते हैं। यदि आप MyISAM के लिए अनुकूलित होने के रूप में डेटाबेस छोड़ते हैं तो आपको उचित तुलना नहीं मिलेगी। सभी innodb_ * विन्यास गुणों पर पढ़ें।

0

मेरे अनुभव से, माईसाम टेबल केवल टेक्स्ट इंडेक्सिंग के लिए उपयोगी हैं जहां आपको बड़े टेक्स्ट पर खोजों के साथ अच्छे प्रदर्शन की आवश्यकता है, लेकिन आपको अभी भी सोलर या लोचदार खोज जैसे पूर्ण खोज इंजन की आवश्यकता नहीं है।

आप InnoDB करने के लिए स्विच, लेकिन एक MyISAM तालिका में अपना पाठ का अनुक्रमण रखना चाहते हैं चाहते हैं, मैं सुझाव है कि आप इस पर एक नज़र डालें: इसके अलावा http://blog.lavoie.sl/2013/05/converting-myisam-to-innodb-keeping-fulltext.html

: InnoDB Percona से innobackupex का उपयोग कर लाइव परमाणु बैकअप का समर्थन करता है। उत्पादन सर्वर से निपटने के दौरान यह देवता है।

संबंधित मुद्दे