Wordpress डेटाबेस स्लो - क्या मुझे InnoDB पर स्विच करना चाहिए?


12

मेरे पास 10k पोस्ट के साथ एक वर्डप्रेस साइट है, और जब भी मैं पोस्ट जोड़ रहा हूं, तो चीजें बहुत धीमी हो रही हैं। पेज पोस्ट की व्यवस्थापक सूचियों के साथ, उपयोगकर्ताओं के लिए अच्छा और तेज़ लोड करते हैं, लेकिन यह तब होता है जब लिखते हैं या अपडेट होते हैं सर्वर 100% सीपीयू में जाता है और एक लंबा समय लगता है (कभी-कभी PHP के 60 के दशक के मुकाबले अधिक)।

मैं सोच रहा हूं कि ऐसा करने की संभावना MyISAM के टेबल लेवल लॉकिंग से है, और मैं इसे InnoDB पर स्विच करने के बारे में सोच रहा हूं। ऐसा करने के निहितार्थ क्या हैं?

कुछ आँकड़े:

select  - per hour ~22k
update  - per hour ~7.6k
set option  - per hour ~7k

मुझे पता है कि मैं कई अन्य अनुकूलन कर सकता हूं, लेकिन मेरी भावनाएं हैं कि इसका सबसे बड़ा प्रभाव हो सकता है।

धन्यवाद

संपादित करें : मैंने धीमेपन के कारण बड़ी समस्याओं में से एक पाया है, यह YARPP (फिर भी एक और संबंधित पोस्ट प्लगिन) था जो हर बार "संबंधितता" को पुन: उत्पन्न कर रहा था, और ऐसा हमें 2k + टैग के कारण लगता था। मैंने "टैग टैग" विकल्प को बंद कर दिया है और यह काफी ऊपर चला गया है।

इसके अलावा, अन्य प्लगइन्स जो चीजों को पुन: उत्पन्न करते हैं वे इस तरह के मुद्दों का कारण बन सकते हैं, जैसे कि कुछ एक्सएमएल साइटमैप प्लगइन्स।

तो, मेरा तत्काल मुद्दा हल हो गया है, हालाँकि मैं अभी भी Wordpress के लिए InnoDB बनाम MyISAM का एक अच्छा जवाब सुनना पसंद करूंगा!

जवाबों:


11

मैं वास्तव में InnoDB पर स्विच करूंगा। टेबल लॉकिंग / पंक्ति लॉकिंग पर लंबे समय से कई लोगों ने चर्चा की है। मैं हमेशा InnoDB हाथ नीचे का चयन करेंगे। हालाँकि, InnoDB ... CACHING चुनने का एक और गहरा कारण है

जबकि अधिकांश लोग यह दावा करते हैं कि MyISAM पढ़े जाने के लिए तेज़ है, अधिकांश लोग यह भूल जाते हैं कि MyISAM के लिए कई कैश, जिसे कुंजी कैश (key_buffer_size द्वारा सेट) कहा जाता है, केवल .MYI फ़ाइलों से इंडेक्स पेजों को कैश करता है। यह डेटा पेज को कभी कैश नहीं करता है। 32-बिट सिस्टम में इसकी आधिकारिक अधिकतम 4GB है। 8-बिट 64-बिट के लिए अधिकतम अधिकतम है।

InnoDB बफर पूल डेटा और इंडेक्स पेजों को कैश करता है। आपके पास जो सर्वर है, उसके आधार पर आप रैम में संपूर्ण डेटासेट को कैश कर सकते हैं। आप इनोबीडी को 80% रैम और 10% तक डीबी कन्वेंशन के लिए ट्यून कर सकते हैं, और ओएस के लिए 10% छोड़ सकते हैं। यह अलग-अलग ऑपरेटिंग सिस्टम के लिए भी सही है

मैंने ड्रुपल ग्राहकों के लिए इन चीजों की शानदार सफलता की सिफारिश की है। यह Wordpress पर भी लागू होता है । मैंने वर्डप्रेस के साथ ग्राहकों के लिए DB समर्थन प्रदान किया है। एक ही सुधार।

आप हमेशा InnoDB के लिए मेमोरी को अधिक प्रभावी ढंग से कॉन्फ़िगर कर सकते हैं कि आप अधिक MyISAM कर सकते हैं। हमेशा अपनी प्रदर्शन आवश्यकताओं के अनुरूप इनोवीडी को ट्विवेक करने का एक तरीका है । जैसे-जैसे आपका डेटा बढ़ता जाएगा, यह अंततः एक आवश्यकता बन जाएगा ।


6

InnoDB शायद आपकी मदद नहीं करेगा - पृष्ठ / पंक्ति स्तर लॉकिंग विवाद को कम करने में मदद करता है, लेकिन ऐसा नहीं लगता कि यह आपका मुद्दा है।

वहाँ बहुत सारी चीजें हैं जो बताती हैं कि MyISAM औसत ब्लॉग परिदृश्य में InnoDB की तुलना में धीमी है (कई लिखता से अधिक पढ़ता है)।

स्विच बनाने से पहले, आपको कम से कम निम्नलिखित करना चाहिए

  • mysqltuner चलाएं जो आपको कुछ कॉन्फ़िगरेशन सलाह देगा (यह अचूक नहीं है या सभी जानते हुए भी)
  • धीमी क्वेरी लॉगिंग चालू करें, इसे एक या दो दिन के लिए छोड़ दें, और फिर लॉग के माध्यम से स्थानांतरण करना शुरू करें, और जो कुछ भी हो रहा है उसे देखने के लिए प्रश्नों को छोड़ दें।

व्यक्तिगत अनुभव से, मैंने पाया कि wp_comments पर एक अनएन्डेक्सड फ़ील्ड के लिए एक इंडेक्स जोड़ने से मेरी विशेष स्थिति में व्यापक रूप से मदद मिली (बहुत कम समय में, जहां 10 या तो लोग एक ही समय में टिप्पणी करने की कोशिश कर रहे थे), और संभवत: यह पता लगाना क्या क्वेरी धीरे-धीरे चल रही हैं और आपको समस्या की बेहतर समझ और वास्तविक समाधान के लिए क्यों प्रेरित कर सकती हैं!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.