Innodb引擎:MySQL5.5之后的默認(rèn)存儲(chǔ)引擎诗越。
特點(diǎn):
- 具有提交(Commit)、回滾(Rollback)、崩潰恢復(fù)能力的事務(wù)安全
- 提供了行級(jí)鎖和外鍵約束
- 沒(méi)有保存表的行數(shù)车海,當(dāng)SELECT COUNT(*) FROM TABLE時(shí)需要掃描全表
MyIASM引擎 :MySQL5.5之前的默認(rèn)存儲(chǔ)引擎,
特點(diǎn):
不支持?jǐn)?shù)據(jù)庫(kù)事務(wù)涂邀,也不支持行級(jí)鎖和外鍵瘟仿,因此當(dāng)INSERT(插入)或UPDATE(更新)數(shù)據(jù)時(shí)即寫操作需要鎖定整個(gè)表,效率便會(huì)低一些比勉。
MyIASM中存儲(chǔ)了表的行數(shù)劳较,于是SELECT COUNT(*) FROM TABLE時(shí)只需要直接讀取已經(jīng)保存好的值而不需要進(jìn)行全表掃描。
訪問(wèn)(SELECT)速度快
如果表的讀操作遠(yuǎn)遠(yuǎn)多于寫操作且不需要數(shù)據(jù)庫(kù)事務(wù)的支持浩聋,那么MyIASM也是很好的選擇
MEMORY引擎
MEMORY存儲(chǔ)引擎是用保存在內(nèi)存中的數(shù)據(jù)來(lái)創(chuàng)建表观蜗,每個(gè)memory表對(duì)應(yīng)一個(gè)磁盤文件。格式是.frm
特點(diǎn):由于他的數(shù)據(jù)是存放在內(nèi)存中的衣洁,并且默認(rèn)使用HASH索引墓捻,所以它的訪問(wèn)速度特別快,同時(shí)也造成了他的缺點(diǎn)坊夫,就是數(shù)據(jù)庫(kù)服務(wù)一旦關(guān)閉砖第,數(shù)據(jù)就會(huì)丟失,另外對(duì)表的大小有限制
每個(gè)memary表中可存儲(chǔ)數(shù)據(jù)量的大小环凿,受到max_heap_table_size變量的約束梧兼,他的初始值是16MB,可以在定義Memary表的時(shí)候通過(guò)max_rows指定表的最大行數(shù)
主要區(qū)別
- 1智听、MyIASM是非事務(wù)安全的羽杰,而InnoDB是事務(wù)安全的
- 2渡紫、MyIASM鎖的粒度是表級(jí)的,而InnoDB支持行級(jí)鎖
- 3考赛、MyIASM支持全文類型索引惕澎,而InnoDB不支持全文索引
- 4、MyIASM相對(duì)簡(jiǎn)單欲虚,效率上要優(yōu)于InnoDB集灌,小型應(yīng)用可以考慮使用MyIASM
- 5、MyIASM表保存成文件形式复哆,跨平臺(tái)使用更加方便
- 6欣喧、InnoDB寫的處理效率差一點(diǎn),并且會(huì)占用更多的磁盤空間來(lái)存儲(chǔ)數(shù)據(jù)和索引
應(yīng)用場(chǎng)景:
InnoDB:支持事務(wù)處理梯找,支持外鍵唆阿,支持崩潰修復(fù)能力和并發(fā)控制。如果需要對(duì)事務(wù)的完整性要求比較高(比如銀行)锈锤,要求實(shí)現(xiàn)并發(fā)控制(比如售票)驯鳖,那選擇InnoDB有很大的優(yōu)勢(shì)。如果需要頻繁的更新久免、刪除操作的數(shù)據(jù)庫(kù)浅辙,也可以選擇InnoDB,因?yàn)橹С质聞?wù)的提交(commit)和回滾(rollback)阎姥。
MyISAM:插入數(shù)據(jù)快记舆,空間和內(nèi)存使用比較低。如果表主要是用于插入新記錄和讀出記錄呼巴,那么選擇MyISAM能實(shí)現(xiàn)處理高效率泽腮。例如:MyISAM存儲(chǔ)引擎很適合管理郵件或Web服務(wù)器日志數(shù)據(jù)。
如果應(yīng)用的完整性衣赶、并發(fā)性要求比 較低诊赊,也可以使用。MEMORY:所有的數(shù)據(jù)都在內(nèi)存中府瞄,數(shù)據(jù)的處理速度快碧磅,但是安全性不高。如果需要很快的讀寫速度摘能,對(duì)數(shù)據(jù)的安全性要求較低续崖,可以選擇MEMOEY。它對(duì)表的大小有要求团搞,不能建立太大的表严望。所以,這類數(shù)據(jù)庫(kù)只使用在相對(duì)較小的數(shù)據(jù)庫(kù)表逻恐。比如像吻,作為統(tǒng)計(jì)操作的中間結(jié)果表峻黍,便于利用它速率快的優(yōu)勢(shì)高效的對(duì)中間結(jié)果進(jìn)分析。
注意拨匆,同一個(gè)數(shù)據(jù)庫(kù)也可以使用多種存儲(chǔ)引擎的表姆涩。如果一個(gè)表要求比較高的事務(wù)處理,可以選擇InnoDB惭每。這個(gè)數(shù)據(jù)庫(kù)中可以將查詢要求比較高的表選擇MyISAM存儲(chǔ)骨饿。如果該數(shù)據(jù)庫(kù)需要一個(gè)用于查詢的臨時(shí)表,可以選擇MEMORY存儲(chǔ)引擎台腥。