MySQL 8 - सभी टेबल + इंडेक्स को ऑप्टिमाइज़ करें
मेरे पास कई डेटाबेस (MySQL 8) के भीतर तालिकाओं (InnoDB) का एक गुच्छा है, कि मैं दैनिक आधार पर कचरा संग्रह स्क्रिप्ट चलाता हूं, बासी रिकॉर्डों को हटा देता हूं जिनकी अब आवश्यकता नहीं है। सभी तालिकाएँ उन पर अनुक्रमित होती हैं।
प्रदर्शन बढ़ाने के लिए क्या यह समझ में आएगा / होगा कि हर हफ्ते सभी टेबल्स को ऑप्टिमाइज़ करना फायदेमंद होगा? यदि हां, तो क्या ऐसा करने के लिए चलाने के लिए अच्छी आज्ञा है?
मैंने करने की कोशिश की
sudo mysqlcheck -o --all-databases
लेकिन निम्न त्रुटि संदेश प्राप्त करें:
note : Table does not support optimize, doing recreate + analyze instead
status : OK
जवाब
परेशान मत करो। InnoDB ज्यादातर अपना ख्याल रखती है। OPTIMIZE
कुछ व्यर्थ जगह को अस्थायी रूप से निचोड़ता है, लेकिन आवेषण / आदि के रूप में नया अपशिष्ट होता है। प्रदर्शन का लाभ OPTIMIZE
शून्य के बगल में है।
वे संदेश 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
फिर, महीने में एक बार या एक बार तिमाही में अनुकूलन करें।