MySQL有哪些存儲引擎?

常見的存儲引擎有哪些?
MySQL中常用的四種存儲引擎分別是: MyISAM、InnoDB、MEMORY、ARCHIVE。MySQL 5.5版本后默認(rèn)的存儲引擎為InnoDB
。
InnoDB存儲引擎
InnoDB是MySQL默認(rèn)的事務(wù)型存儲引擎,使用最廣泛,基于聚簇索引建立的。InnoDB內(nèi)部做了很多優(yōu)化,如能夠自動(dòng)在內(nèi)存中創(chuàng)建自適應(yīng)hash索引,以加速讀操作。
優(yōu)點(diǎn):支持事務(wù)和崩潰修復(fù)能力;引入了行級鎖和外鍵約束。
缺點(diǎn):占用的數(shù)據(jù)空間相對較大。
適用場景:需要事務(wù)支持,并且有較高的并發(fā)讀寫頻率。
MyISAM存儲引擎
數(shù)據(jù)以緊密格式存儲。對于只讀數(shù)據(jù),或者表比較小、可以容忍修復(fù)操作,可以使用MyISAM引擎。MyISAM會(huì)將表存儲在兩個(gè)文件中,數(shù)據(jù)文件.MYD
和索引文件.MYI
。
優(yōu)點(diǎn):訪問速度快。
缺點(diǎn):MyISAM不支持事務(wù)和行級鎖,不支持崩潰后的安全恢復(fù),也不支持外鍵。
適用場景:對事務(wù)完整性沒有要求;表的數(shù)據(jù)都會(huì)只讀的。
MEMORY存儲引擎
MEMORY引擎將數(shù)據(jù)全部放在內(nèi)存中,訪問速度較快,但是一旦系統(tǒng)奔潰的話,數(shù)據(jù)都會(huì)丟失。
MEMORY引擎默認(rèn)使用哈希索引,將鍵的哈希值和指向數(shù)據(jù)行的指針保存在哈希索引中。
優(yōu)點(diǎn):訪問速度較快。
缺點(diǎn):
- 哈希索引數(shù)據(jù)不是按照索引值順序存儲,無法用于排序。
- 不支持部分索引匹配查找,因?yàn)楣K饕鞘褂盟饕械娜績?nèi)容來計(jì)算哈希值的。
- 只支持等值比較,不支持范圍查詢。
- 當(dāng)出現(xiàn)哈希沖突時(shí),存儲引擎需要遍歷鏈表中所有的行指針,逐行進(jìn)行比較,直到找到符合條件的行。
ARCHIVE存儲引擎
ARCHIVE存儲引擎非常適合存儲大量獨(dú)立的、作為歷史記錄的數(shù)據(jù)。ARCHIVE提供了壓縮功能,擁有高效的插入速度,但是這種引擎不支持索引,所以查詢性能較差。