MySQL 將資料以不同技術儲存在檔案或記憶體中,每種技術擁有獨特的儲存機制、索引策略、鎖定粒度與功能特性。這些技術在 MySQL 中稱為「儲存引擎」(Storage Engine),舊稱「表類型」。選擇合適的引擎,能在不改動應用代碼的前提下,針對不同業務場景獲得最佳效能與功能平衡——這正是 MySQL 區別於單一儲存模式商業資料庫的核心優勢。
-- MySQL 4.1.2+
SHOW ENGINES;
-- 老版本
SHOW VARIABLES LIKE 'have_%';
輸出中的 `Support` 欄位:`DEFAULT`=預設、`YES`=可用、`NO`=不可用、`DISABLED`=已禁用。
| 鎖類型 | 代表引擎 | 特點 | 適用場景 |
|---|---|---|---|
| 表鎖 | MyISAM | 鎖定整張表,寫入串行化 | 讀多寫少、唯讀、日誌類 |
| 頁鎖 | BerkeleyDB | 鎖定 8KB 頁 | 較少見 |
| 行鎖 | InnoDB | 僅鎖操作行,並發度最高 | 高並發 OLTP、事務型業務 |
| 引擎 | 核心優勢 | 典型適用場景 | 不適用場景 |
|---|---|---|---|
| InnoDB | 事務、行鎖、外鍵、崩潰安全、MVCC 高並發 | 核心業務、電商訂單、金融帳務、高並發讀寫 | 純唯讀、超大唯讀分析表 |
| MyISAM | 全文索引(舊版)、壓縮表、極快 COUNT(*)、空間索引 | 日誌、報表、唯讀查詢、全文檢索(舊版本) | 高寫入、需事務、需高並發 |
| MEMORY | 資料在記憶體,極快,支援 Hash 索引 | 臨時表、快取表、查找表、Session 存儲 | 持久化需求、資料量大於記憶體 |
| ARCHIVE | 高壓縮、僅支援插入/查詢、無索引 | 海量日誌歸檔、審計記錄、歷史數據冷存儲 | 頻繁更新/刪除、需索引查詢 |
| CSV | 以 CSV 檔案儲存,便於外部工具交換 | 資料匯入匯出、跨系統資料交換 | 高效能查詢、索引需求 |
| BLACKHOLE | 寫入即丟棄,主從同步中繼、審計日誌過濾 | 複寫中繼、測試、日誌過濾 | 任何需持久化場景 |
理解儲存引擎特性,根據業務的「讀寫比例、事務需求、並發量、資料量、查詢模式」選型,是 MySQL 架構設計的基石。現代應用 90%+ 場景首選 InnoDB,輔以特定場景下的 MEMORY/ARCHIVE 等專用引擎。