कुछ Magento के टेबल InnoDB नहीं हैं, क्या सभी तालिकाओं को InnoDB में बदलना सुरक्षित है?


16

मैं एडब्ल्यूएस आरडीएस रीड रेप्लिका का उपयोग कर रहा हूं। इसमें लगातार Magento के मेमोरी इंजन टेबल के साथ समस्याएँ हैं। बैकअप के लिए और प्रतिकृतियां पढ़ें RDS, InnoDB को पसंद करती है। क्या मैं सुरक्षित रूप से सभी तालिकाओं को InnoDB में बदल सकता हूं?

इसके अतिरिक्त मुझे AWS से निम्न चेतावनी मिलती है:

DB Instance magento-monin-prod-db में MyISAM टेबल्स हैं जो कि InnoDB में माइग्रेट नहीं किए गए हैं। ये टेबल पॉइंट-इन-टाइम रिस्टोर करने की आपकी क्षमता को प्रभावित कर सकते हैं। इन तालिकाओं को InnoDB में परिवर्तित करने पर विचार करें। कृपया http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.MySQL.CommonDBATasks.html#MySQL.CommonDBATasks.Tables देखें

प्रशंसनीय उत्तर

अभी भी प्रतिक्रिया में रुचि है। अगर मुझे अगले 24 घंटों के भीतर कोई समस्या नहीं आती है तो मैं इसे एक उत्तर के रूप में जोड़ूंगा। नीचे मैंने जो कदम उठाए, वे अब तक सुरक्षित हैं। मेरी सबसे बड़ी चिंता थी मैगेंटो मेमोरी इंजन टेबल (in_tmp समाप्त होने वाली टेबल) और इसका असर अनुक्रमण पर पड़ सकता है।

मैंने जो किया था यह रहा:

  1. SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE (ENGINE = 'Memory' OR ENGINE='MyIsam') AND TABLE_SCHEMA='magento_db'

    • मेरे लिए यह ज्यादातर अस्थायी इंडेक्स टेबल और मैगेंटो मॉड्यूल टेबल लौटा , इसलिए महत्वपूर्ण कोर तालिकाओं के बारे में चिंतित होने के लिए और कुछ पर्याप्त तालिकाओं के बारे में नहीं है कि मैं आसानी से एक और परिवर्तन तालिका निष्पादित कर सकता हूं यदि सामान प्रशंसक को हिट करता है।
  2. प्रत्येक तालिका के लिए मुझे निष्पादित किया गया: Alter table {table-name} ENGINE=InnoDB;

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


क्या आप इसे लंबे समय से उत्पादन में चला रहे हैं? यदि हां, तो यह कैसे हो रहा है - क्या इससे आपको कोई समस्या हुई? मुख्य रूप से * _tmp इंडेक्स टेबल के बारे में सोचना जो वर्तमान में MEMORY इंजन है।
माइकल पार्किन

1
मैंने कुछ भी असामान्य नहीं देखा।
टायलर एसएन

महान, पुष्टि करने के लिए धन्यवाद - हम इसे एक रिपोर्ट देंगे और वापस भी रिपोर्ट करेंगे।
माइकल पार्किं

@michael पार्किन ध्यान रखें कि हम सोल खोज का उपयोग कर रहे हैं। अन्य उत्तर देखें जो बोलते हैं कि यह खोज को कैसे प्रभावित कर सकता है।
टायलरएसएन

1
हम इसे अपनी अधिकांश उत्पादन साइटों (मारियाडीबी 10.0) में चला रहे हैं, सभी टेबल (मेमोरी सहित) इनोबीडी के रूप में चल रहे हैं - महान काम करते हैं
माइकल पार्किन

जवाबों:


11

डेटा प्रकार को InnoDB में बदलना ठीक है, यह मानते हुए कि निम्नलिखित में से एक सत्य है:

  1. आप MySQL 5.6.4+ का उपयोग कर रहे हैं जहाँ InnoDB स्टोरेज इंजन फुलटेक्स्ट सर्च को सपोर्ट करता है
  2. आप डिफ़ॉल्ट Magento खोज कार्यक्षमता का उपयोग नहीं कर रहे हैं जो अंतर्निहित MyISAM फुलटेक्स्ट खोज क्षमताओं पर निर्भर करता है। इस कार्यक्षमता के साथ शुरू करने के लिए परेशानी है वाली है और डिफ़ॉल्ट मैगेंटो सर्च में उपलब्ध सुविधा सेट वांछित होने के लिए बहुत कुछ छोड़ देता है इसलिए मैं ल्यूसिन या स्फिंक्स या सबसे अच्छा अभी तक अल्गोलिया होस्ट की गई खोज का उपयोग करने का सुझाव दूंगा

व्यक्तिगत रूप से मैं Magento DB मरम्मत उपकरण के साथ ऐसा करने की सिफारिश करेंगे जोखिम कम करने और किसी अन्य DB विन्यास बहाव या समस्याओं के लिए जाँच करने के लिए । InnoDB एक आदर्श इंजन है, यह पूर्ण सीमाओं के बावजूद है।


1
हम सौर खोज का उपयोग कर रहे हैं। इसलिए, हमें स्पष्ट होना चाहिए जहां तक ​​खोज का संबंध है।
टायलरएसएन 17

मैं InnoDB को आदर्श इंजन बिल्कुल नहीं मानूंगा। यदि आपके पास बहुत सारे खोज क्वेरी हैं, तो यह MyISAM की तुलना में बहुत धीमा है। मैं अक्सर सुनता हूं कि InnoDB तेजी से अपडेट कर रहा है और अधिकांश प्रश्न अपडेट हैं इसलिए यह तेज है। मैं कुल विपरीत देखता हूं। मेरे पास मौजूद प्रत्येक साइट के लिए, मेरे पास और अधिक खोज क्वेरीज़ हैं जो क्वेरीज़ को अपडेट / जोड़ते हैं। मैंने अपने सभी तालिकाओं को InnoDB पर स्विच करने का प्रयास किया और पृष्ठ लोड समय मूल रूप से बिना विलंब (शायद 0.1 सेकंड) से 10 सेकंड तक चला गया! मैंने सब कुछ वापस MyISAM में बदल दिया क्योंकि यह गति के लिए आदर्श इंजन है (और यह फुलटेक्स सर्च को सपोर्ट करता है)।
टिम एकेल

टिम, मैं सहमत हूं "काइंड", ज्यादातर क्योंकि मैंने समय और फिर से देखा है कि @ बेन-कमानी-सोनासी सिर्फ फ्लैट-आउट सही साबित हुए हैं और MySQL शायद ही कभी ओआरएस सिस्टम के समग्र perf w / # पर एक वास्तविक खींचें है लोड पर भी उप -800 मी प्रतिक्रियाओं के लिए अनुकूलन की आवश्यकता होती है लेकिन BUT InnoDB कुंजी है b / c Mage Core प्रत्येक उपयोगकर्ता को "व्यू" क्रिया लॉग करने के लिए DB ~ 10X पर लिख रहा है "खोज प्लस और गुण के लिए सोलर सबसे अच्छा है :)
ब्रायन" डॉ। हॉफपाउर

1
तो, यह कैसे समझा जाता है कि इनोबीडी उन सभी विदेशी प्रमुख रिश्तों को संभालती है और कैसे पूरी तरह से नष्ट हो जाती हैं जो उन fkey रिश्तों से कैस्केड को हटाने पर निर्भर हैं? दूसरे शब्दों में, आप उस कूड़े को कैसे संभालते हैं जो रिश्तों के स्थान पर नहीं होने से बचा रहेगा?
फियास्को लैब्स

@FiascoLabs जब से मैंने इस टिप्पणी थ्रेड की जाँच की है, तब तक कुछ समय हो गया है, लेकिन Q / A का फोकस FROM MyISAM TO InnoDB में बदलना है। मैं उन अनुमान लगा रहा हूं जिनके संबंध में आपके द्वारा उल्लेखित विशेषताएँ शायद पहले से ही InnoDB हैं। MyISAM FK का समर्थन नहीं करता है और न ही MySQL 5.7 के लेनदेन के रूप में, हालांकि InnoDB यह SQL मानक से थोड़ा विचलित
ब्रायन 'बीजे' हॉफपॉयर जूनियर

2

Afaik आपको सभी तालिकाओं को InnoDB में नहीं बदलना चाहिए।

catalogsearch_fulltext MyISAM में रहना चाहिए, क्योंकि InnoDB में कोई पूर्ण खोज समर्थन नहीं है, कम से कम MySQL 5.6 (iirc) तक नहीं।

अन्य सभी तालिकाओं के लिए, हालांकि, यह सुरक्षित होना चाहिए।



2

मैंने अभी-अभी MySQL के डिफ़ॉल्ट इंजन को InnoDB में बदला है और मेरी Magento के अधिकांश टेबल ने चमत्कारिक ढंग से खुद को InnoDB में बदल दिया है (कुछ अभी भी MyISAM हैं और कुछ मेमोरी हैं)।

बस मैंने सोचा कि मैं इसे साझा करूंगा ...

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