概覽
MySQL 默認支持 ISAM、MyISAM、HEAP 三大引擎,另有 InnoDB、BDB(BerkeleyDB)作為事務型引擎擴展。選型直接決定性能、並發、可靠性邊界。
1. ISAM — 經典唯讀優化引擎(已淘汰)
- 優勢: 讀取極快、內存佔用低、存儲緊湊。
- 劣勢: 不支持事務、不支持外鍵、**無容錯能力**(硬盤故障數據不可恢復)、表鎖並發差。
- 現狀: MySQL 5.1+ 已移除,僅歷史項目維護涉及。
2. MyISAM — ISAM 增強版,MySQL 5.5 前默認引擎
- 核心改進: 表級鎖優化並發讀寫、索引/字段管理增強、
myisamchk 修復工具、myisampack 壓縮工具。
- 特性: 全文索引(5.6+ InnoDB 也支持)、壓縮只讀表、
COUNT(*) 極快(存儲行數)。
- 維護成本: 需定期
OPTIMIZE TABLE 回收碎片空間。
- 適用場景: 讀多寫少、全文搜索、日誌分析、只讀報表、虛擬主機限制環境。
3. HEAP (MEMORY) — 內存臨時表引擎
- 特性: 數據駐留內存、Hash 索引(默認)、極速讀寫、**重啟數據全丟失**、不支持 BLOB/TEXT、固定行長度(VARCHAR 實際按 CHAR 存儲)。
- 適用場景: 臨時中間結果、會話緩存、查詢緩存表、頻繁讀寫的查找表。
- 鐵律: 用完即刪
DROP TABLE,切勿存持久化數據。
4. 事務型引擎:InnoDB 與 BDB
| 特性 | InnoDB | BDB (BerkeleyDB) |
| 事務支持 | 完整 ACID、行鎖、MVCC | 支持事務、頁鎖 |
| 外鍵約束 | 支持 | 支持 |
| 崩潰恢復 | Redo/Undo Log 雙重保障 | 日誌恢復 |
| 性能 | 高並發寫入優秀 | 較慢,逐漸被淘汰 |
| 現狀 | **MySQL 5.5+ 默認引擎,主流首選** | MySQL 5.1+ 已移除支持 |
選型決策樹
- 需要事務/外鍵/高並發寫入 → InnoDB(無腦首選)。
- 純只讀、全文搜索、極簡環境 → MyISAM。
- 臨時計算、會話級緩存、可接受重啟丟失 → MEMORY。
- 歸檔日誌、寫一次讀多次 → Archive。
查看與修改表引擎
SHOW TABLE STATUS FROM dbname; -- 查看 Engine 列
ALTER TABLE tbl_name ENGINE = InnoDB; -- 線上轉換(鎖表,大表慎用)