MySQL 支持多種存儲引擎,最常用的是 MyISAM(舊版默認)與 InnoDB(5.5+ 默認)。本文詳細對比兩者核心差異,幫助根據業務選型。
| 特性 | MyISAM | InnoDB |
|---|---|---|
| 事務 | 不支持 | 支持 (ACID) |
| 鎖粒度 | 表級 | 行級 |
| 外鍵 | 不支持 | 支持 |
| 全文索引 | 5.6+ 支持 | 5.6+ 支持 |
COUNT(*) 無 WHERE | 極快(存儲行數) | 掃描聚簇索引 |
| 自增列索引要求 | 可聯合索引 | 需單列索引或首列 |
| 崩潰恢復 | 無,需修復 | Redo/Undo Log 自動恢復 |
| 數據文件跨平台 | 可直接複製 | 需邏輯導出/物理備份工具 |
| 壓縮表 | 支持 myisampack | 支持 COMPRESSED 行格式 |
CREATE TABLE t(...) ENGINE=InnoDB。-- 非事務轉事務(數據不丟失) ALTER TABLE t1 ENGINE=InnoDB; -- 查看引擎 SHOW CREATE TABLE t1; SHOW TABLE STATUS LIKE 't1';
REPAIR TABLE、myisamchk -r、CHECK TABLE。CHECK TABLE、mysqlcheck,不可用 REPAIR / myisamchk。