MySQL 5.5 版本前預設存儲引擎為 MyISAM,5.5 及之後版本改為 InnoDB。可通過修改配置文件 default-storage-engine 參數變更預設引擎,或在建表時透過 ENGINE=... 指定。使用 SHOW ENGINES 查看支援引擎,SELECT ENGINE FROM INFORMATION_SCHEMA.ENGINES WHERE TRANSACTIONS='YES' 篩選支援事務的引擎。
核心特性: 不支援事務、外鍵,但讀取速度極快,適合以 SELECT/INSERT 為主、對事務完整性要求不高的場景。
檔案結構: 每張表對應三個同名不同副檔名的檔案:
.frm - 表定義.MYD (MYData) - 數據檔案.MYI (MYIndex) - 索引檔案數據與索引檔案可透過 DATA DIRECTORY 和 INDEX DIRECTORY 分離存放。表損壞時可用 CHECK TABLE 檢查、REPAIR TABLE 修復。
三種存儲格式:
OPTIMIZE TABLE 整理。myisampack 建立,極度節省空間,唯讀,適合歸檔數據。核心優勢: 支援 ACID 事務、行級鎖、外鍵約束、MVCC 多版本並發控制,寫入效能較 MyISAM 稍弱,佔用空間較大。
關鍵特性:
LAST_INSERT_ID() 獲取最新值,ALTER TABLE ... AUTO_INCREMENT=n 強制設定。RESTRICT/CASCADE/SET NULL/NO ACTION 四種級聯動作。ibdata1)與獨立表空間(innodb_file_per_table=ON,推薦)。數據完全駐留記憶體,存取速度極快,預設使用 Hash 索引。服務重啟數據丟失(結構保留),適合查詢引用表、統計中間結果表。表大小受 max_heap_table_size(預設 16MB)與 MAX_ROWS 限制。
將結構相同的多張 MyISAM 表邏輯合併,本身不存數據,操作透傳到底層表。插入策略由 INSERT_METHOD 控制(FIRST/LAST/NO)。DROP TABLE 僅移除定義,不影響底層表。不同於分區表,MERGE 不會智能路由寫入。

選型建議: 事務業務首選 InnoDB;唯讀/日誌分析高並發讀考慮 MyISAM;熱點查找表用 MEMORY;歷史歸檔大表可用 MERGE 或分區表。