MySQL 可插拔儲存引擎架構允許**表級**選擇,正確選型能最大化效能與功能匹配度。
根據應用特點選擇,複雜系統可混合部署多種引擎。
| 引擎 | 核心特性 | 最佳適用場景 |
|---|---|---|
| MyISAM | 表鎖、無交易、支援全文索引、壓縮唯讀表、myisamchk 離線修復 | 讀多寫少、日誌/報表/資料倉儲、全文搜尋、唯讀歷史資料 |
| InnoDB | 列鎖、ACID 交易、外鍵、MVCC、自動崩潰恢復、聚簇索引 | **核心業務首選**:高併發寫入、需交易一致性、關聯完整性、熱點資料 |
| MEMORY (HEAP) | 資料全在記憶體、Hash 索引(預設)、表鎖、重啟資料消失 | 暫存中間表、Session 快取、查找字典表、資料可重建場景 |
| MERGE | 邏輯合併多個同結構 MyISAM 表、單一查詢入口 | 資料倉儲分區表(如按月分表)、VLDB 環境跨分區查詢 |
myisampack / Archive-- 核心交易表
CREATE TABLE orders (...) ENGINE=InnoDB;
-- 商品全文搜尋
CREATE TABLE products_ft (...) ENGINE=MyISAM;
-- 即時排行榜(定時重建)
CREATE TABLE ranking_tmp (...) ENGINE=MEMORY;
-- 歷史訂單按月分表 + MERGE 總覽
CREATE TABLE orders_2023_01 (...) ENGINE=MyISAM;
CREATE TABLE orders_2023_02 (...) ENGINE=MyISAM;
CREATE TABLE orders_all (id INT, ...) ENGINE=MERGE UNION=(orders_2023_01,orders_2023_02) INSERT_METHOD=LAST;
SHOW ENGINES;
-- Support 欄位:YES/DEFAULT/NO/DISABLED
若需引擎顯示 DISABLED,需重新編譯 MySQL 或安裝對應套件(如 plugin-load-add=ha_innodb.so)。