| 引擎 | 事務支援 | 核心特點 | 適用場景 |
|---|---|---|---|
| MyISAM | ❌ | 默認引擎(5.5 前),全文索引、壓縮表、修復工具豐富 | 只讀/多讀少寫、全文搜尋、日志分析 |
| InnoDB | ✅ ACID | 行級鎖、外鍵、MVCC、崩潰恢復、聚簇索引 | 核心業務首選、高併發、需事務 |
| MEMORY (HEAP) | ❌ | 數據在內存、Hash 索引、極快、重啟丟失 | 臨時表、緩存表、查找表 |
| MERGE | ❌ | MyISAM 表集合邏輯視圖、提高大表管理效率 | 分區日志表、歸檔表統一查詢 |
| ARCHIVE | ❌ | 僅支援 INSERT/SELECT、高壓縮、無索引 | 海量日志歸檔、審計記錄 |
| CSV | ❌ | CSV 文件存儲、可直接用表格工具編輯 | 數據交換、外部系統對接 |
| FEDERATED | ❌ | 遠程 MySQL 表映射、本地無數據文件 | 跨實例查詢、異構數據整合 |
REPAIR TABLECOUNT(*) 秒級返回(內置計數器)autocommit=1 默認,批量寫入需显式 BEGIN/COMMIT需要事務/外鍵/高併發寫入? → 是 → InnoDB
↓ 否
需要全文搜尋(MySQL<5.6)? → 是 → MyISAM
↓ 否
數據臨時/重啟可丟失/極速讀取? → 是 → MEMORY
↓ 否
海量只寫日志/歸檔? → 是 → ARCHIVE
↓ 否
跨實例查詢遠程表? → 是 → FEDERATED
↓ 否
默認選 InnoDB(5.5+ 默認引擎)
ALTER TABLE table_name ENGINE = InnoDB;
-- 或
ALTER TABLE table_name TYPE = InnoDB; (舊語法)
MySQL 5.5+ 默認 InnoDB 已成行業標準。除非極特殊場景(全文搜尋舊版本、純內存臨時表、歸檔日志),核心業務表統一 InnoDB 可避免 90% 的坑。