儲存引擎決定了表的儲存方式、索引機制、鎖粒度、事務支援等核心特性。MySQL 採用插件式架構,允許同一資料庫中不同表使用不同引擎。
SHOW ENGINES\G
SHOW VARIABLES LIKE 'storage_engine'; -- 查看預設引擎
關鍵欄位:Engine(名稱)、Support(YES/DEFAULT/NO)、Transactions(事務)、XA(分散式事務)、Savepoints(儲存點)。
| 引擎 | 事務 | 鎖粒度 | 外鍵 | 全文索引 | 適用場景 |
|---|---|---|---|---|---|
| InnoDB | ✅ | 行級 | ✅ | 5.6+ | 高並發寫入、事務、外鍵、熱備份 |
| MyISAM | ❌ | 表級 | ❌ | ✅ | 讀多寫少、全文搜尋、空間資料 |
| Memory | ❌ | 表級 | ❌ | ❌ | 暫存表、快取、查找映射 |
| Archive | ❌ | 行級 | ❌ | ❌ | 日誌、歸檔、大量寫入少查詢 |
| CSV | ❌ | 表級 | ❌ | ❌ | 資料交換、匯入匯出 |
innodb_file_per_table=1 獨立表空間.frm(結構)、.MYD(資料)、.MYI(索引)[mysqld]
default-storage-engine=InnoDB # 或 MyISAM
修改後重啟服務生效。現有表需 ALTER TABLE t ENGINE=InnoDB 遷移。