MySQL स्टोरेज इंजन: अवलोकन और तुलना
स्टोरेज इंजन MySQL का वह घटक है जो डेटा को डिस्क पर बनाता, पढ़ता, अद्यतन करता और हटाता है। MySQL प्लगेबल स्टोरेज इंजन आर्किटेक्चर का उपयोग करता है।
उपलब्ध इंजन देखें
mysql> SHOW ENGINES;
आउटपुट (MySQL 8.0 सामान्य)
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | DEFAULT | Supports transactions, row-level locking, foreign keys | YES | YES | YES | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write disappears) | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
मुख्य इंजन तुलना
| इंजन | उपयोग मामला | ट्रांजैक्शन | लॉकिंग | विदेशी कुंजी |
|---|---|---|---|---|
| InnoDB | डिफ़ॉल्ट, सामान्य OLTP | हाँ (ACID) | पंक्ति-स्तरीय | हाँ |
| MyISAM | केवल पढ़ें/रीड-हेवी, फुलटेक्स्ट (पुराना) | नहीं | टेबल-स्तरीय | नहीं |
| MEMORY | अस्थायी टेबल, कैश, लुकअप | नहीं | टेबल-स्तरीय | नहीं |
| CSV | CSV फ़ाइल इंटरचेंज | नहीं | टेबल-स्तरीय | नहीं |
| ARCHIVE | केवल सम्मिलन, संपीड़ित लॉग | नहीं | टेबल-स्तरीय | नहीं |
| BLACKHOLE | रिप्लिकेशन फिल्टर, बेंचमार्क | नहीं | नहीं | नहीं |
टेबल बनाते समय इंजन चुनें
CREATE TABLE t (id INT) ENGINE = InnoDB;
इंजन बदलें
ALTER TABLE t ENGINE = InnoDB;
डिफ़ॉल्ट इंजन
MySQL 5.5+ में डिफ़ॉल्ट InnoDB है। my.cnf में बदलें:
[mysqld] default-storage-engine = InnoDB
कौन सा चुनें?
- InnoDB: लगभग सभी सामान्य मामलों के लिए (डिफ़ॉल्ट चुनें)
- MyISAM: केवल पढ़ें विश्लेषणात्मक वर्कलोड, फुलटेक्स्ट (पुराना)
- MEMORY: सत्र डेटा, अस्थायी गणना (रीस्टार्ट पर डेटा खो जाता है)
- ARCHIVE: केवल लिखें लॉग डेटा, उच्च संपीड़न
- CSV: बाहरी उपकरणों के साथ डेटा विनिमय