存儲引擎決定資料如何儲存、索引、鎖定、支援何種功能。MySQL 可在伺服器/資料庫/表三層級指定引擎,提供極大彈性。
mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------+
| Engine | Support | Comment |
+------------+---------+----------------------------------------------------+
| MyISAM | DEFAULT | 預設引擎,高效能非事務 |
| InnoDB | YES | 事務、行級鎖、外鍵 |
| MEMORY | YES | 記憶體表,適合暫存 |
| MERGE | YES | MyISAM 表集合 |
| ARCHIVE | NO | 歸檔引擎,僅支援插入/查詢 |
| CSV | NO | CSV 格式儲存 |
| ... | ... | ... |
+------------+---------+----------------------------------------------------+
mysql> SHOW VARIABLES LIKE 'have_%';
+------------------+----------+
| Variable_name | Value |
+------------------+----------+
| have_innodb | DISABLED |
| have_bdb | YES |
| have_isam | YES |
| ... | ... |
+------------------+----------+
| 引擎 | 事務 | 鎖粒度 | 外鍵 | 全文索引 | 適用場景 |
|---|---|---|---|---|---|
| InnoDB | ✅ | 行級 | ✅ | 5.6+ ✅ | 核心業務、高並發寫入 |
| MyISAM | ❌ | 表級 | ❌ | ✅ | 讀多寫少、全文搜尋、日誌 |
| MEMORY | ❌ | 表級 | ❌ | ❌ | 暫存表、快速查找 |
| ARCHIVE | ❌ | 行級 | ❌ | ❌ | 海量歸檔、僅寫入查詢 |
| CSV | ❌ | 表級 | ❌ | ❌ | 外部工具交換資料 |
| BLACKHOLE | ❌ | 無 | ❌ | ❌ | 複製過濾、效能測試 |
CREATE TABLE t1 (id INT) ENGINE=InnoDB;
ALTER TABLE t1 ENGINE=InnoDB;
[mysqld]
default-storage-engine=InnoDB
INSTALL PLUGIN innodb SONAME 'ha_innodb.so';
UNINSTALL PLUGIN innodb;
./configure --with-plugins=innodb,myisam,archive --without-plugin=blackhole
[mysqld]
skip-innodb
# 或
innodb=OFF