MySQL 透過可插拔的儲存引擎架構,支援多種資料處理需求。理解各引擎特性,能針對業務場景做出最佳選型。
| 引擎 | 核心特性 | 適用場景 | 限制 |
|---|---|---|---|
| ISAM | 讀取極快、低記憶體佔用、不支援交易、無容錯機制 | 唯讀、高頻查詢、非關鍵任務 | 硬碟故障資料不可恢復、需頻繁備份 |
| MyISAM | ISAM 擴展版、預設引擎、表級鎖、支援全文索引、壓縮工具 | Web 讀多寫少、全文搜尋、日誌分析 | 無交易支援、無外鍵、須定期 OPTIMIZE TABLE |
| HEAP (MEMORY) | 記憶體表、極速、資料易失性、不支援 BLOB/TEXT | 暫存表、快速查找、Session 暫存 | 重啟資料全失、非持久化 |
| InnoDB | ACID 交易、行級鎖、外鍵、MVCC、崩潰恢復 | 核心業務、高併發寫入、資料一致性要求高 | 寫入較 MyISAM 慢、空間佔用大 |
| BDB (BerkeleyDB) | 交易支援、頁級鎖、較 InnoDB 早期 | 需交易但不需行級鎖的舊系統 | 已淘汰,MySQL 5.1+ 移除支援 |
修改 my.cnf / my.ini:
[mysqld]
default-storage-engine = InnoDB
或執行 SET GLOBAL default_storage_engine = InnoDB;(重啟失效)
-- 建表時指定
CREATE TABLE t1 (id INT) ENGINE = InnoDB;
-- 修改既有表引擎
ALTER TABLE t1 ENGINE = InnoDB;
-- 查看表引擎
SHOW TABLE STATUS FROM db_name;
不同引擎在相同業務下效能可相差數倍。選型錯誤會導致鎖爭用、資料不一致、備份困難等嚴重後果。上線前必須進行壓力測試驗證。