ALTER TABLE ... ENGINE कमांड
MySQL में किसी टेबल का स्टोरेज इंजन (Storage Engine) बदलने के लिए ALTER TABLE के साथ ENGINE क्लॉज का उपयोग करें।
सिंटैक्स
ALTER TABLE yourTableName ENGINE = yourEngineName;
उदाहरण: MyISAM से InnoDB में बदलें
1. MyISAM इंजन के साथ टेबल बनाएं
mysql> CREATE TABLE ChangeEngineTableDemo (
-> MovieId INT,
-> MovieName VARCHAR(100),
-> IsPopular BOOL
-> ) ENGINE = 'MyISAM';
Query OK, 0 rows affected (0.37 sec)
2. इंजन बदलें
mysql> ALTER TABLE ChangeEngineTableDemo ENGINE = InnoDB;
Query OK, 0 rows affected (2.21 sec)
Records: 0 Duplicates: 0 Warnings: 0
3. पुष्टि करें
mysql> SHOW CREATE TABLE ChangeEngineTableDemo;
+-----------------------+----------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------------------+----------------------------------------------------------------------------------------------------------------------------------+
| ChangeEngineTableDemo | CREATE TABLE `changeenginetabledemo` ( `MovieId` int(11) DEFAULT NULL, `MovieName` varchar(100) DEFAULT NULL, `IsPopular` tinyint(1) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-----------------------+----------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.03 sec)
परिणाम: आउटपुट में ENGINE=InnoDB दिख रहा है - इंजन सफलतापूर्वक बदल दिया गया।
सामान्य स्टोरेज इंजन
| इंजन | विशेषताएं | उपयोग |
|---|---|---|
| InnoDB | ट्रांजैक्शन, विदेशी कुंजी, पंक्ति-स्तरीय लॉकिंग, क्रैश रिकवरी | डिफ़ॉल्ट, सामान्य उपयोग, उत्पादन |
| MyISAM | तेज पढ़ना, पूर्ण-पाठ खोज (पुराना), कोई ट्रांजैक्शन नहीं, टेबल-स्तरीय लॉक | केवल-पढ़ना, लॉगिंग, पुराने ऐप्स |
| MEMORY | रैम में स्टोर, बहुत तेज, सर्वर रीस्टार्ट पर डेटा खो जाता है | कैश, अस्थायी गणना |
| CSV | CSV फ़ाइल के रूप में स्टोर | डेटा एक्सचेंज |
महत्वपूर्ण विचार
- डाउनटाइम: बड़ी टेबल पर इंजन बदलने में समय लगता है (टेबल पुनर्निर्माण होता है)
- फीचर हानि: InnoDB → MyISAM जाने पर ट्रांजैक्शन/विदेशी कुंजी समर्थन खो जाता है
ENGINE=InnoDBMySQL 5.5+ में डिफ़ॉल्ट है- इंजन बदलने से
AUTO_INCREMENTमान रीसेट हो सकता है
सभी टेबल्स का इंजन देखें
SELECT TABLE_NAME, ENGINE
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_database';