存儲引擎決定了表的存儲方式、索引機制、鎖粒度、事務支援等核心特性。MySQL 5.5+ 默認 InnoDB,但理解各引擎優勢,能針對業務場景做最優選擇。
.frm(定義)、.MYD(數據)、.MYI(索引),支持數據/索引分離存放優化 IOmyisampack 創建,極小體積、只讀)COUNT(*) 無需掃描極快,支持全文索引(5.6+ InnoDB 也支持)REPAIR TABLE 修復ALTER TABLE ... AUTO_INCREMENT=n 修改初始值(重啟失效);LAST_INSERT_ID() 獲取本線程最後自增值ibdata*) 或 獨立表空間(.ibd,需 innodb_file_per_table=1),後者利於單表備份遷移RESTRICT/NO ACTION(阻止)、CASCADE(級聯)、SET NULL(置空);大數據導入可暫時 SET FOREIGN_KEY_CHECKS=0 加速.frm 仅存結構;默認 HASH 索引(等值查詢 O(1)),可指定 BTREE 支持範圍查詢max_heap_table_size 限制.MRG 文件記錄成員表INSERT_METHOD 控制插入目標(FIRST/LAST/NO),不支持智能路由(分區表可)| 業務特徵 | 推薦引擎 | 核心理由 |
|---|---|---|
| 讀多寫少、無事務、需全文索引 | MyISAM | 讀性能最優、COUNT(*) 瞬時完成 |
| 事務密集、高並發寫入、需外鍵 | InnoDB | 行級鎖+MVCC、崩潰安全、標準默認 |
| 臨時數據、極速查詢、可容忍丟失 | MEMORY | 內存級延遲、HASH 索引極快 |
| 海量歷史日誌、統一查詢入口 | MERGE | 邏輯分表透明化、跨磁盤均衡 IO |
原則:單庫多表可混用引擎;實測為準,無絕對最優。新項目默認 InnoDB,特定場景再評估調整。