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

Innodb
MySQL5.5以及之后的版本采用innodb作為默認(rèn)的存儲引擎,主要特點如下:
- 支持行級鎖
 - 支持外鍵約束
 - 完備的事務(wù)機制,實現(xiàn)了四種隔離級別
 - 可靠性號,崩潰后修復(fù)能力較高
 
文件格式:
- .frm(存儲表定義)
 - 共享表空間文件:ibdata1
 - 私有表空間文件:表名.ibd
 - redo log文件
 
適用場景:數(shù)據(jù)修改頻繁,對事務(wù)特性要求比較高(如金融系統(tǒng)),需要支持并發(fā)處理能力的系統(tǒng)。
MYISAM
MySQL5.5以前采用MYISAM作為默認(rèn)的存儲引擎,主要特點如下:
- 比較強調(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ù)可靠性很差,機器或MySQL服務(wù)器重啟后,就會丟失
 - 需要機器有足夠的內(nèi)存
 
適用場景:數(shù)據(jù)量不大,需要被頻繁的訪問,而且數(shù)據(jù)丟失不會對業(yè)務(wù)產(chǎn)生比較嚴(yán)重的影響。















 
 
 









 
 
 
 