MySQL में ALTER TABLE ... ENGINE= स्टेटमेंट का उपयोग करके मौजूदा तालिका का स्टोरेज इंजन बदला जा सकता है।
सिंटैक्स
ALTER TABLE table_name ENGINE = engine_name;
उदाहरण: MyISAM से InnoDB में बदलें
MyISAM इंजन के साथ तालिका बनाएं:
mysql> CREATE TABLE DemoTable (
->> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
->> StudentName VARCHAR(20), StudentAge INT, StudentCountryName VARCHAR(20)
->> ) ENGINE=MyISAM, AUTO_INCREMENT=101;
वर्तमान इंजन जांचें
mysql> SHOW CREATE TABLE DemoTable;
आउटपुट (पहले)
ENGINE=MyISAM AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
इंजन बदलें
mysql> ALTER TABLE DemoTable ENGINE=InnoDB;
पुष्टि करें
mysql> SHOW CREATE TABLE DemoTable;
आउटपुट (बाद में)
ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
महत्वपूर्ण विचार
- तालिका लॉक: ALTER TABLE तालिका को लॉक करता है (बड़ी तालिकाओं पर डाउनटाइम)
- पुनर्निर्माण: डेटा नए इंजन फॉर्मेट में कॉपी होता है
- डिस्क स्पेस: ऑपरेशन के दौरान दोगुना स्पेस चाहिए
- ऑनलाइन DDL: MySQL 5.6+ InnoDB के लिए कुछ ऑपरेशन ऑनलाइन करता है
सामान्य इंजन परिवर्तन
MyISAM → InnoDB- ट्रांजैक्शन, FK, रो-लॉकिंग के लिए (अनुशंसित)InnoDB → MyISAM- फुलटेक्स्ट खोज (पुराने संस्करण), रीड-ओनली आर्काइवAny → Memory- अस्थायी तेज़ एक्सेस (डेटा हानि जोखिम)
सत्यापन क्वेरी
SELECT TABLE_NAME, ENGINE FROM information_schema.tables
WHERE TABLE_SCHEMA = 'your_db' AND TABLE_NAME = 'DemoTable';