MySQL存儲引擎InnoDB和MyISAM對比總結(jié)

MySQL 有多種存儲引擎,目前常用的是 MyISAM 和 InnoDB 這兩個引擎,除了這兩個引擎以為還有許多其他引擎,有官方的,也有一些公司自己研發(fā)的。這篇文章主要簡單概述一下常用常見的 MySQL 引擎,一則這是面試中常被問到的問題,二則這也是數(shù)據(jù)庫設(shè)計中不可忽略的問題,用合適的引擎可以更好的適應(yīng)業(yè)務(wù)場景,提高業(yè)務(wù)效率。


InnoDB引擎

InnoDB是一個事務(wù)型的存儲引擎,支持回滾,設(shè)計目標(biāo)是處理大數(shù)量數(shù)據(jù)時提供高性能的服務(wù),它在運行時會在內(nèi)存中建立緩沖池,用于緩沖數(shù)據(jù)和索引。

InnoDB引擎優(yōu)點

1.支持事務(wù)處理、ACID事務(wù)特性;

2.實現(xiàn)了SQL標(biāo)準(zhǔn)的四種隔離級別;

3.支持行級鎖和外鍵約束;

4.可以利用事務(wù)日志進(jìn)行數(shù)據(jù)恢復(fù)。

5.鎖級別為行鎖,行鎖優(yōu)點是適用于高并發(fā)的頻繁表修改,高并發(fā)是性能優(yōu)于 MyISAM。缺點是系統(tǒng)消耗較大。

6.索引不僅緩存自身,也緩存數(shù)據(jù),相比 MyISAM 需要更大的內(nèi)存。

InnoDB引擎缺點

不支持FULLTEXT類型的索引,因為它沒有保存表的行數(shù),當(dāng)使用COUNT統(tǒng)計時會掃描全表。

InnoDB引擎適用場景

1.需要事務(wù)的操作;

2.更新數(shù)據(jù)需要使用行級鎖;

3.大數(shù)據(jù)量讀寫;

4.大型互聯(lián)網(wǎng)應(yīng)用。


MyISAM引擎

MyISAM 是 MySQL 5.5.5 之前的默認(rèn)引擎,它的設(shè)計目標(biāo)是快速讀取。

MyISAM引擎優(yōu)點

1.高性能讀??;

2.因為它保存了表的行數(shù),當(dāng)使用COUNT統(tǒng)計時不會掃描全表;

MyISAM引擎缺點

1.鎖級別為表鎖,表鎖優(yōu)點是開銷小,加鎖快;缺點是鎖粒度大,發(fā)生鎖沖動概率較高,容納并發(fā)能力低,這個引擎適合查詢?yōu)橹鞯臉I(yè)務(wù)。

2.此引擎不支持事務(wù),也不支持外鍵。

3.INSERT和UPDATE操作需要鎖定整個表;

4.它存儲表的行數(shù),于是SELECT COUNT(*) FROM TABLE時只需要直接讀取已經(jīng)保存好的值而不需要進(jìn)行全表掃描。

MyISAM引擎適用場景

1.不需要事務(wù)的操作;

2.插入、更新少,讀取頻繁;

3.頻繁的統(tǒng)計計算。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容