MySQL 獨特的插拔式儲存引擎架構
MySQL 允許針對不同表格選擇最適合的儲存引擎,常見引擎包括:
- MyISAM、InnoDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED
其中 InnoDB、BDB 支援交易(ACID),其餘為非交易型引擎。
主流引擎特性比較
1. MyISAM(預設舊版引擎)
- 不支援交易、外鍵
- 表級鎖定,讀取速度極快
- 三個檔案:
.frm(結構)、.MYD(資料)、.MYI(索引)
- 適合唯讀或以讀為主的場景
2. InnoDB(預設新版引擎)
- 支援行級鎖定、外鍵、交易
- 自動遞增欄位需為索引鍵值
- 資料與索引共用表空間或獨立表空間
- 適用於高併發、資料完整性要求高的業務
3. MEMORY(HEAP)
- 資料儲存在記憶體,速度最快
- 唯一對應
.frm 結構檔,重啟後資料遺失
- 預設使用 HASH 索引,適合暫存表、快取表
4. MERGE
- 多個結構相同的 MyISAM 表邏輯聯集
- 本身不儲存資料,操作實際導向子表
- 插入需透過
INSERT_METHOD 指定目標子表
選擇建議
| 場景 | 建議引擎 |
| 一般 OLTP、需交易 | InnoDB |
| 唯讀/大量讀取、全文搜尋 | MyISAM |
| 暫存計算、查詢快取 | MEMORY |
| 大量歷史資料分區查詢 | MERGE / Partitioned InnoDB |