| 特性 | MyISAM | InnoDB |
|---|---|---|
| 事務支援 | ❌ 不支援 | ✅ ACID 完整支援 |
| 鎖粒度 | 表級鎖 | 行級鎖 (條件:查詢走索引;全表掃描仍升級為表鎖) |
| 全文索引 | ✅ 原生支援 | ❌ 5.6 前不支援,5.6+ 已支援 |
| 外鍵約束 | ❌ 不支援 | ✅ 完整支援 |
| 崩潰恢復 | 依賴外部修復工具 | ✅ Redo/Undo Log 自動恢復 |
| MVCC 多版本並發 | ❌ | ✅ 非鎖定讀取 (一致性非鎖定讀) |
| 儲存結構 | 三檔:.frm(結構) .MYD(資料) .MYI(索引) | 共享表空間 (ibdata) 或獨立表空間 (.ibd) |
| 預設引擎 | 5.5 前預設 | 5.5+ 預設 |
SHOW CREATE TABLE tbl_name;
SHOW TABLE STATUS FROM db_name WHERE Name = 'tbl_name';
mysqlshow -u user -p --status db_name tbl_name
ALTER TABLE tbl_name ENGINE = InnoDB; -- 5.5+ 標準語法
-- 舊語法 (不推薦)
ALTER TABLE tbl_name TYPE = InnoDB;
[mysqld] default-storage-engine=InnoDB--default-table-type=InnoDBSET SESSION default_storage_engine = InnoDB;ALTER TABLE 會重建表,大表請離峰執行,預留足夠磁碟空間InnoDB 是現代 MySQL 的**絕對主力**,MyISAM 退居特定唯讀/全文搜尋輔助角色。選擇引擎本質是選擇**資料一致性保障等級**與**併發處理能力**。