現狀結論
MySQL 5.6+ 版本默認存儲引擎即為 InnoDB,MyISAM 已逐漸淡出主流生產環境,處於「維護兼容、不再推薦新建」的邊緣地位。
核心對比(5.7/8.0 視角)
| 維度 | InnoDB | MyISAM |
| 事務支持 | ✅ 完整 ACID | ❌ 無 |
| 行級鎖 | ✅ 高併發 | ❌ 表級鎖 |
| 外鍵約束 | ✅ 支持 | ❌ 無 |
| 崩潰恢復 | ✅ Redo/Undo Log | ❌ 易損壞,需修復 |
| 全文索引 | ✅ 5.6+ 原生支持 | ✅ 早期優勢 |
| 空間索引 | ✅ 5.7+ 原生支持 | ❌ 無 |
| 只讀壓縮表 | ✅ 支持 | ✅ 支持 |
| 查詢純讀性能 | 略低(事務開銷) | 略高(無鎖開銷) |
MyISAM 僅存殘留場景
- 極度簡單的只讀/日誌/緩存表:無事務、無併發寫入、數據可重建。
- 老系統遷移未完成:歷史表仍為 MyISAM,改造成本高暫不動。
- 特定全文搜索舊版本依賴:5.6 前 InnoDB 無全文索引,舊項目綁定 MyISAM。
非關係型數據庫(NoSQL)崛起對 MyISAM 的衝擊
- NoSQL(Redis、MongoDB、ES)承擔了「高性能讀寫、結構靈活、全文搜索」等 MyISAM 曾覬覦的場景。
- MyISAM 失去了「中間選擇」的定位:InnoDB 覆蓋關係型核心需求,NoSQL 覆蓋非關係型高性能需求,MyISAM 夾在中間無生存空間。
選型建議
- 新建表默認 InnoDB,無特殊理由不指定
ENGINE=MyISAM。
- 現有 MyISAM 表評估遷移:
ALTER TABLE t ENGINE=InnoDB;(在線 DDL 5.6+ 支持)。
- 純讀高併發報表表,可考慮 ClickHouse / Apache Doris / StarRocks 等 OLAP 引擎,而非 MyISAM。
MyISAM 完成了歷史使命,InnoDB 才是關係型數據庫的當代標配 —— 選型時,除非有極其明確的 Legacy 理由,閉眼選 InnoDB。