| 引擎 | 事務 | 鎖粒度 | 索引類型 | 適用場景 | 備註 |
|---|---|---|---|---|---|
| MyISAM | ❌ | 表級 | B-tree、Fulltext | 唯讀多、日誌、統計、非關鍵數據 | 5.5 前預設,全文索引優勢 |
| InnoDB | ✅ ACID | 行級 (MVCC) | B-tree、Fulltext (5.6+) | 核心業務:訂單、帳戶、庫存 | 5.5+ 預設,崩潰安全、外鍵 |
| Memory (HEAP) | ❌ | 表級 | Hash (預設)、B-tree | 臨時表、查找表、Session 緩存 | 重啟數據丟失,僅支援固定長度行 |
| Archive | ❌ | 行級 (插入鎖) | 無索引 (5.1+ 支援) | 海量日誌、審計、歷史歸檔 | 高壓縮、僅支援 INSERT/SELECT |
| CSV | ❌ | 表級 | 無 | 外部系統數據交換、ETL 中間表 | 直接讀寫 CSV 檔案 |
| Blackhole | ❌ | 無 | 無 | 複制中繼、測試、審計過濾 | 寫入即丟棄,Binlog 可記錄 |
| Federated | ❌ | 遠程 | 遠程 | 異構數據庫聯邦查詢、微服務聚合 | 網路延遲敏感,生產慎用 |
| NDB Cluster | ✅ | 行級 | Hash、Ordered Index | 極高可用、分佈式、內存計算 | 獨立集群架構,運維複雜 |
MySQL 插件式存儲架構允許:
CREATE TABLE orders (...) ENGINE=InnoDB;
CREATE TABLE access_log (...) ENGINE=Archive;
CREATE TABLE ip_lookup (...) ENGINE=Memory;
CREATE TABLE dict_export (...) ENGINE=CSV;
根據業務特性**按表選型**,而非全庫統一,最大化效能與功能匹配度。
ALTER TABLE tbl_name ENGINE=InnoDB;
大表操作會鎖表重建,建議:
pt-online-schema-change (Percona Toolkit) 在線無鎖變更**InnoDB 是 90% 場景的正解**,其餘引擎針對特定細分場景(全文、緩存、歸檔、聯邦、集群)提供極致優化。**理解業務讀寫模式、一致性要求、運維能力,按表精準選型**,是 MySQL 架構師的核心功力。