MySQL主流存儲引擎及適用場景
Mysql數據庫支持多種存儲引擎,不同的存儲引擎有其適用的場景,選擇合適的存儲引擎是Mysql優化的策略之一。
常見的存儲引擎有:MyISAM、Innodb、Memory

Innodb
MySQL5.5以及之后的版本采用innodb作為默認的存儲引擎,主要特點如下:
- 支持行級鎖
- 支持外鍵約束
- 完備的事務機制,實現了四種隔離級別
- 可靠性號,崩潰后修復能力較高
文件格式:
- .frm(存儲表定義)
- 共享表空間文件:ibdata1
- 私有表空間文件:表名.ibd
- redo log文件
適用場景:數據修改頻繁,對事務特性要求比較高(如金融系統),需要支持并發處理能力的系統。
MYISAM
MySQL5.5以前采用MYISAM作為默認的存儲引擎,主要特點如下:
- 比較強調讀取效率,查詢速度較快
- 磁盤空間占用少
- 只支持表級鎖,并發能力較差
- 不支持事務,災難恢復能力較差
文件格式:
- .frm(存儲表定義)
- MYD(MYData,存儲數據)
- MYI(MYIndex,存儲索引)
適用場景:數據很少更新,一次插入,多次讀取的業務場景。

MEMORY
類似于內存緩存,表結構的定義存在磁盤上(frm文件),實際數據是存儲在內存中,響應速度比較快。
- 響應速度快
- 表級鎖,頻繁更新數據可能會造成并發瓶頸
- 不支持可變字段(但可以借助verchar實現文本存儲)
- 數據可靠性很差,機器或MySQL服務器重啟后,就會丟失
- 需要機器有足夠的內存
適用場景:數據量不大,需要被頻繁的訪問,而且數據丟失不會對業務產生比較嚴重的影響。