MySQL 8 - सभी टेबल + इंडेक्स को ऑप्टिमाइज़ करें

Nov 27 2020

मेरे पास कई डेटाबेस (MySQL 8) के भीतर तालिकाओं (InnoDB) का एक गुच्छा है, कि मैं दैनिक आधार पर कचरा संग्रह स्क्रिप्ट चलाता हूं, बासी रिकॉर्डों को हटा देता हूं जिनकी अब आवश्यकता नहीं है। सभी तालिकाएँ उन पर अनुक्रमित होती हैं।

प्रदर्शन बढ़ाने के लिए क्या यह समझ में आएगा / होगा कि हर हफ्ते सभी टेबल्स को ऑप्टिमाइज़ करना फायदेमंद होगा? यदि हां, तो क्या ऐसा करने के लिए चलाने के लिए अच्छी आज्ञा है?

मैंने करने की कोशिश की

sudo mysqlcheck -o --all-databases

लेकिन निम्न त्रुटि संदेश प्राप्त करें:

note     : Table does not support optimize, doing recreate + analyze instead
status   : OK

जवाब

1 RickJames Nov 29 2020 at 14:36

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

1 RolandoMySQLDBA Nov 27 2020 at 04:39

वे संदेश InnoDB के लिए सामान्य हैं। आप ऐसा करना जारी रख सकते हैं।

InnoDB Storage Engine OPTIMIZE TABLE mydb.mytable;इस तरह का प्रदर्शन करता है

ALTER TABLE mydb.mytable ENGINE=InnoDB;
ANALYZE TABLE mydb.mytable;

मैंने वर्षों से इसका उल्लेख किया है:

  • Sep 27, 2015: मैं MySQL में डीफ़्रैग्मेन्ट टेबल कैसे कर सकता हूं?
  • Jun 24, 2015: परिवर्तन तालिका के बाद ऑप्टिमाइज़ टेबल कॉल करने के लिए दिशानिर्देश?
  • Feb 27, 2013: Mysql में ऑप्टिमाइज़ टेबल और एनालिसिस टेबल के बीच क्या अंतर है
  • Aug 04, 2011: InnoDB डिफ़ॉल्ट सेटिंग्स का अनुकूलन

मैं दैनिक या साप्ताहिक विश्लेषण करने की सलाह देता हूं

sudo mysqlcheck --analyze --all-databases

फिर, महीने में एक बार या एक बार तिमाही में अनुकूलन करें।