अत्यधिक INSERT, UPDATE, DELETE ऑपरेशन्स से टेबल की भौतिक संग्रहण खंडित (fragmented) हो जाती है, जिससे प्रदर्शन गिरता है। OPTIMIZE TABLE टेबल को पुनर्गठित करके खंडन दूर करता है।
सिंटैक्स
OPTIMIZE TABLE table_name;
उदाहरण
mysql> OPTIMIZE TABLE student_info\G
*************************** 1. row ***************************
Table: query.student_info
Op: optimize
Msg_type: status
Msg_text: OK
1 row in set (1.34 sec)
क्या होता है
- MyISAM: डेटा फाइल डिफ्रैगमेंट, इंडेक्स ट्री पुनर्निर्माण, अप्रयुक्त स्थान मुक्त
- InnoDB:
ALTER TABLE ... ENGINE=InnoDBके समान — टेबल पुनर्निर्माण, इंडेक्स पुनर्निर्माण, स्थान पुनर्प्राप्ति - सांख्यिकी भी अपडेट होती है (ANALYZE TABLE के समान)
आउटपुट फील्ड्स
Op: optimizeMsg_type: statusMsg_text: OKया चेतावनी (जैसे "Table does not support optimize, doing recreate + analyze")
कब चलाएं
- बड़े पैमाने पर DELETE/UPDATE के बाद
- महीनों/वर्षों से चल रही टेबल्स पर
SHOW TABLE STATUSमेंData_freeबड़ा दिखने पर- रखरखाव विंडो के दौरान (लॉक हो सकता है)
सावधानियां
- बड़ी टेबल्स पर समय/लॉक ले सकता है
- InnoDB में
innodb_file_per_table=ONआवश्यक - प्रतिकृति स्लेव्स पर सावधानी से चलाएं
नोट: MySQL 8.0+ में OPTIMIZE TABLE ऑनलाइन DDL का उपयोग कर सकता है (कम लॉकिंग)।