可用引擎取決於編譯時選項。預設支援:ISAM、MyISAM、HEAP。常見擴充:**InnoDB、BDB (BerkeleyDB)**。查看當前支援:SHOW ENGINES;
| 引擎 | 定位 | 核心優勢 | 核心劣勢 | 適用場景 |
|---|---|---|---|---|
| ISAM | 舊版基礎引擎 | 讀極快、資源佔用低 | 無事務、無容錯、崩潰資料不可恢復 | 唯讀歷史歸檔、極少寫入 |
| MyISAM | MySQL 預設 (5.5 前) | 表鎖優化並發讀寫、壓縮索引、修復工具完善 | 無事務、無外鍵、崩潰需修復 | Web 讀多寫少、日誌、報表、全文索引 |
| HEAP (MEMORY) | 記憶體臨時表 | 全記憶體、速度最快 | 重啟資料消失、不支援 BLOB/TEXT、表鎖 | 中間結果暫存、查找表、Session 快取 |
| InnoDB | 事務引擎標準 | ACID、行鎖、外鍵、MVCC、快速崩潰恢復 | 空間較大、寫入稍慢、全文索引較晚支援 | 核心交易、高併發寫入、需資料安全 |
| BDB | BerkeleyDB 事務 | 支援事務、頁鎖 | 已停止維護、MySQL 5.1+ 移除 | 歷史遷移專用,新專案勿用 |
AUTO_INCREMENT 內部處理極快(≥10% 提升),值不重用。DATA DIRECTORY、INDEX DIRECTORY 可分離資料/索引目錄提升 I/O。myisamchk --analyze 統計鍵值分布,myisampack 壓縮唯讀表。innodb_buffer_pool_size 是調優第一參數。
# 查看所有引擎支援狀態
SHOW ENGINES;
# 查看預設引擎
SHOW VARIABLES LIKE 'default_storage_engine';
# 查看特定表引擎
SHOW CREATE TABLE tbl_name;
-- 或
SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA='db' AND TABLE_NAME='tbl';
mysql_convert_table_format 或 ALTER TABLE ... ENGINE=MyISAM。pt-online-schema-change,小表直接 ALTER TABLE。