MySQL存储引擎InnoDB,MyISAM
MySQL存儲(chǔ)引擎InnoDB,MyISAM
1、區(qū)別:
(1)InnoDB支持事務(wù),MyISAM不支持,對(duì)于InnoDB每一條SQL語(yǔ)言都默認(rèn)封裝成事務(wù),自動(dòng)提交,這樣會(huì)影響速度,所以最好把多條SQL語(yǔ)句放在begin和commit之間,組成一個(gè)事務(wù);
(2)InnoDB支持外鍵,而MyISAM不支持。對(duì)一個(gè)包含外鍵的InnoDB表轉(zhuǎn)為MYISAM會(huì)失敗;
(3)InnoDB是聚集索引,數(shù)據(jù)文件是和索引綁在一起的,必須要有主鍵,通過(guò)主鍵索引效率很高。但是輔助索引需要兩次查詢,先查詢到主鍵,然后再通過(guò)主鍵查詢到數(shù)據(jù)。因此,主鍵不應(yīng)該過(guò)大,因?yàn)橹麈I太大,其他索引也都會(huì)很大。而MyISAM是非聚集索引,數(shù)據(jù)文件和索引是分離的,索引保存的是數(shù)據(jù)文件的指針。主鍵索引和輔助索引是獨(dú)立的。
(4)InnoDB不保存表的具體行數(shù),執(zhí)行select count(*) from table時(shí)需要全表掃描。而MyISAM用一個(gè)變量保存了整個(gè)表的行數(shù),執(zhí)行上述語(yǔ)句時(shí)只需要讀出該變量即可,速度很快;
(5)Innodb鎖的粒度更細(xì),支持行鎖,MyISAM不支持。
2、如何選擇存儲(chǔ)引擎
(1)是否要支持事務(wù),如果要請(qǐng)選擇innodb,如果不需要可以考慮MyISAM;
(2)如果表中絕大多數(shù)都只是讀查詢,可以考慮MyISAM,如果既有讀寫也挺頻繁,請(qǐng)使用InnoDB;
(3)系統(tǒng)奔潰后,MyISAM恢復(fù)起來(lái)更困難,能否接受;
(4)數(shù)據(jù)量較大(3TB以上)時(shí)不要用MyISAM,崩潰后難以恢復(fù)。
InnoDB:數(shù)據(jù)完整性,并發(fā)性處理,擅長(zhǎng)更新,刪除。
MyISAM:高速查詢及插入。擅長(zhǎng)插入和查詢。
轉(zhuǎn)載于:https://www.cnblogs.com/xidian2014/p/8591877.html
總結(jié)
以上是生活随笔為你收集整理的MySQL存储引擎InnoDB,MyISAM的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 十天学Linux内核之第七天---电源开
- 下一篇: JAVA vo pojo j