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

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

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