MySQL 採用可插拔存儲引擎架構,SHOW ENGINES 可查看支持列表。5.6 起 InnoDB 為預設引擎,官方強烈推薦優先使用,除非特定場景有明確理由選擇其他引擎。
| 特性 | MyISAM | Memory | InnoDB | Archive | NDB Cluster |
|---|---|---|---|---|---|
| 存儲上限 | 256TB | 受限於 RAM | 64TB | 無 | 384EB |
| 事務支持 | ❌ | ❌ | ✅ ACID | ❌ | ✅ |
| 鎖粒度 | 表鎖 | 表鎖 | 行鎖 | 表鎖 | 行鎖 |
| MVCC | ❌ | ❌ | ✅ | ❌ | ❌ |
| 外鍵 | ❌ | ❌ | ✅ | ❌ | ❌ |
| 全文索引 | ✅ (5.6+) | ❌ | ✅ (5.6.4+) | ❌ | ❌ |
| 聚簇索引 | ❌ | ❌ | ✅ | ❌ | ❌ |
| 數據壓縮 | ✅ (Row format) | ❌ | ✅ (Barracuda) | ✅ | ❌ |
| 集群原生 | ❌ | ❌ | ❌ | ❌ | ✅ |
| 崩潰恢復 | ❌ | ❌ | ✅ 极快 | ❌ | ✅ |
| 典型場景 | 只讀/日誌/全文 | 臨時表/查找表 | 通用 OLTP | 歸檔/審計 | 高可用集群 |
REPAIR TABLEROW_FORMAT=COMPRESSED)僅讀,適合歸檔INSERT/SELECT,不支持 UPDATE/DELETE/索引
需要事務/外鍵/高併發寫入?
├─ 是 → InnoDB(95% 場景最佳選擇)
└─ 否 → 只讀/全文搜索/日誌歸檔?
├─ 全文搜索(5.6 前) → MyISAM
├─ 純日誌/歸檔/寫多讀少 → Archive
├─ 臨時高速查找/會話數據 → Memory
├─ 跨實例查詢 → Federated(極少用)
└─ 文本交換 → CSV
單實例可混合使用多種引擎:
CREATE TABLE t (...) ENGINE=InnoDB; 顯式指定引擎,避免依賴預設值。
caching_sha2_password