MySQL採用插件式儲存引擎架構,核心服務層負責SQL解析、優化、快取,底層由不同儲存引擎處理實際資料I/O。預設支援三大引擎:ISAM、MyISAM、HEAP,另有InnoDB與BerkleyDB (BDB)可選。選擇正確引擎關鍵在於應用場景的讀寫比例、交易需求、並發控制等特性匹配。
唯讀或極少更新的查閱型資料(如郵遞區號表、靜態配置表)。關鍵任務應用必須配合頻繁備份策略。
myisamchk修復工具、myisampack壓縮工具需定期執行OPTIMIZE TABLE回收更新機制產生的碎片空間。
Web應用以讀取操作為主,MyISAM強調快速讀取特性完美契合。多數虛擬主機商僅支援MyISAM格式。
SELECT密集型暫時性資料處理絕不可用於持久化業務資料。用畢必須立即DROP TABLE釋放記憶體。
| 特性 | MyISAM/ISAM/HEAP | InnoDB/BDB |
|---|---|---|
| 交易支援 (ACID) | ❌ 不支援 | ✅ 完整支援 |
| 外來鍵約束 | ❌ 不支援 | ✅ 支援 |
| 鎖定粒度 | 表級 | 列級 |
| 效能 | 讀取極快 | 較慢(交易開銷) |
| 崩潰恢復 | 需手動修復 | 自動恢復 (Redo/Undo Log) |
CREATE TABLE ... ENGINE=InnoDB)innodb_buffer_pool_size調優,建議設為實體記憶體60-80%CHECK TABLE、OPTIMIZE TABLE