MySQL 採用插件式存儲引擎架構,不同引擎適用不同場景。本文列出常見引擎特性、查看命令及選型建議。
SHOW ENGINES; -- 或美化輸出 SHOW ENGINES\G -- 查看默認引擎 SHOW VARIABLES LIKE 'storage_engine';
| 引擎 | 事務 | 鎖粒度 | 外鍵 | 全文索引 | 典型場景 | 備註 |
|---|---|---|---|---|---|---|
| InnoDB | ✅ ACID | 行鎖 | ✅ | 5.6+ ✅ | **默認引擎**,OLTP、高併發、數據完整性要求高 | 聚簇索引、MVCC、崩潰恢復 |
| MyISAM | ❌ | 表鎖 | ❌ | ✅ (早期優勢) | 只讀/多讀少寫、全文檢索 (舊版)、非關鍵日誌 | 不支持事務、崩潰易損壞 |
| MEMORY (HEAP) | ❌ | 表鎖 | ❌ | ❌ | 臨時表、緩存表、查找表(數據可重建) | 數據在內存,重啟丟失 |
| ARCHIVE | ❌ | 行鎖 | ❌ | ❌ | 歸檔日誌、審計流水(僅插入/查詢) | 高壓縮、無索引(5.1+支持) |
| CSV | ❌ | 表鎖 | ❌ | ❌ | 與外部 CSV 文件交換數據 | 不支持索引 |
| MRG_MYISAM (MERGE) | ❌ | 表鎖 | ❌ | ✅ | 將多個同結構 MyISAM 表作為一個邏輯表 | 便於分區式管理 |
| FEDERATED | ❌ | 遠程 | ❌ | ❌ | 訪問遠程 MySQL 實例 | 性能依賴網絡 |
| BLACKHOLE | ✅ | 行鎖 | ❌ | ❌ | 複制過濾、性能測試(寫入即丟棄) | 「黑洞」引擎 |