摘要:一常用存儲(chǔ)引擎及特點(diǎn)存儲(chǔ)引擎從版本之后,的默認(rèn)內(nèi)置存儲(chǔ)引擎已經(jīng)是了,他的主要特點(diǎn)有災(zāi)難恢復(fù)性比較好支持事務(wù)。
一、MySQL常用存儲(chǔ)引擎及特點(diǎn)
1、InnoDB存儲(chǔ)引擎
從MySQL5.5版本之后,MySQL的默認(rèn)內(nèi)置存儲(chǔ)引擎已經(jīng)是InnoDB了,他的主要特點(diǎn)有:
(1)災(zāi)難恢復(fù)性比較好;
(2)支持事務(wù)。默認(rèn)的事務(wù)隔離級(jí)別為可重復(fù)度,通過(guò)MVCC(并發(fā)版本控制)來(lái)實(shí)現(xiàn)的。
(3)使用的鎖粒度為行級(jí)鎖,可以支持更高的并發(fā);
(4)支持外鍵;
(5)配合一些熱備工具可以支持在線(xiàn)熱備份;
(6)在InnoDB中存在著緩沖管理,通過(guò)緩沖池,將索引和數(shù)據(jù)全部緩存起來(lái),加快查詢(xún)的速度;
(7)對(duì)于InnoDB類(lèi)型的表,其數(shù)據(jù)的物理組織形式是聚簇表。所有的數(shù)據(jù)按照主鍵來(lái)組織。數(shù)據(jù)和索引放在一塊,都位于B+數(shù)的葉子節(jié)點(diǎn)上;
2、MyISAM存儲(chǔ)引擎
在5.5版本之前,MyISAM是MySQL的默認(rèn)存儲(chǔ)引擎,該存儲(chǔ)引擎并發(fā)性差,不支持事務(wù),所以使用場(chǎng)景比較少,主要特點(diǎn)為:
(1)不支持事務(wù);
(2)不支持外鍵,如果強(qiáng)行增加外鍵,不會(huì)提示錯(cuò)誤,只是外鍵不其作用;
(3)對(duì)數(shù)據(jù)的查詢(xún)緩存只會(huì)緩存索引,不會(huì)像InnoDB一樣緩存數(shù)據(jù),而且是利用操作系統(tǒng)本身的緩存;
(4)默認(rèn)的鎖粒度為表級(jí)鎖,所以并發(fā)度很差,加鎖快,鎖沖突較少,所以不太容易發(fā)生死鎖;
(5)支持全文索引(MySQL5.6之后,InnoDB存儲(chǔ)引擎也對(duì)全文索引做了支持),但是MySQL的全文索引基本不會(huì)使用,對(duì)于全文索引,現(xiàn)在有其他成熟的解決方案,比如:ElasticSearch,Solr,Sphinx等。
(6)數(shù)據(jù)庫(kù)所在主機(jī)如果宕機(jī),MyISAM的數(shù)據(jù)文件容易損壞,而且難恢復(fù);
3、MEMORY存儲(chǔ)引擎
將數(shù)據(jù)存在內(nèi)存中,和市場(chǎng)上的Redis,memcached等思想類(lèi)似,為了提高數(shù)據(jù)的訪(fǎng)問(wèn)速度,主要特點(diǎn):
(1)支持的數(shù)據(jù)類(lèi)型有限制,比如:不支持TEXT和BLOB類(lèi)型,對(duì)于字符串類(lèi)型的數(shù)據(jù),只支持固定長(zhǎng)度的行,VARCHAR會(huì)被自動(dòng)存儲(chǔ)為CHAR類(lèi)型;
(2)支持的鎖粒度為表級(jí)鎖。所以,在訪(fǎng)問(wèn)量比較大時(shí),表級(jí)鎖會(huì)成為MEMORY存儲(chǔ)引擎的瓶頸;
(3)由于數(shù)據(jù)是存放在內(nèi)存中,所以在服務(wù)器重啟之后,所有數(shù)據(jù)都會(huì)丟失;
(4)查詢(xún)的時(shí)候,如果有用到臨時(shí)表,而且臨時(shí)表中有BLOB,TEXT類(lèi)型的字段,那么這個(gè)臨時(shí)表就會(huì)轉(zhuǎn)化為MyISAM類(lèi)型的表,性能會(huì)急劇降低;
4、ARCHIVE存儲(chǔ)引擎
ARCHIVE存儲(chǔ)引擎適合的場(chǎng)景有限,由于其支持壓縮,故主要是用來(lái)做日志,流水等數(shù)據(jù)的歸檔,主要特點(diǎn):
(1)支持Zlib壓縮,數(shù)據(jù)在插入表之前,會(huì)先被壓縮;
(2)僅支持SELECT和INSERT操作,存入的數(shù)據(jù)就只能查詢(xún),不能做修改和刪除;
(3)只支持自增鍵上的索引,不支持其他索引;
5、CSV存儲(chǔ)引擎
數(shù)據(jù)中轉(zhuǎn)試用,主要特點(diǎn):
(1)其數(shù)據(jù)格式為.csv格式的文本,可以直接編輯保存;
(2)導(dǎo)入導(dǎo)出比較方便,可以將某個(gè)表中的數(shù)據(jù)直接導(dǎo)出為csv,試用Excel辦公軟件打開(kāi);
1、由于鎖粒度的不同,InnoDB比MyISAM支持更高的并發(fā);
2、InnoDB為行級(jí)鎖,MyISAM為表級(jí)鎖,所以InnoDB相對(duì)于MyISAM來(lái)說(shuō),更容易發(fā)生死鎖,鎖沖突的概率更大,而且上鎖的開(kāi)銷(xiāo)也更大,因?yàn)樾枰獮槊恳恍屑渔i;
3、在備份容災(zāi)上,InnoDB支持在線(xiàn)熱備,有很成熟的在線(xiàn)熱備解決方案;
4、查詢(xún)性能上,MyISAM的查詢(xún)效率高于InnoDB,因?yàn)镮nnoDB在查詢(xún)過(guò)程中,是需要維護(hù)數(shù)據(jù)緩存,而且查詢(xún)過(guò)程是先定位到行所在的數(shù)據(jù)塊,然后在從數(shù)據(jù)塊中定位到要查找的行;而MyISAM可以直接定位到數(shù)據(jù)所在的內(nèi)存地址,可以直接找到數(shù)據(jù);
5、SELECT COUNT(*)語(yǔ)句,如果行數(shù)在千萬(wàn)級(jí)別以上,MyISAM可以快速查出,而InnoDB查詢(xún)的特別慢,因?yàn)镸yISAM將行數(shù)多帶帶存儲(chǔ)了,而InnoDB需要朱行去統(tǒng)計(jì)行數(shù);所以如果使用InnoDB,而且需要查詢(xún)行數(shù),則需要對(duì)行數(shù)進(jìn)行特殊處理,如:離線(xiàn)查詢(xún)并緩存;
6、MyISAM的表結(jié)構(gòu)文件包括:.frm(表結(jié)構(gòu)定義),.MYI(索引),.MYD(數(shù)據(jù));而InnoDB的表數(shù)據(jù)文件為:.ibd和.frm(表結(jié)構(gòu)定義);
1、使用場(chǎng)景是否需要事務(wù)支持;
2、是否需要支持高并發(fā),InnoDB的并發(fā)度遠(yuǎn)高于MyISAM;
3、是否需要支持外鍵;
4、是否需要支持在線(xiàn)熱備;
5、高效緩沖數(shù)據(jù),InnoDB對(duì)數(shù)據(jù)和索引都做了緩沖,而MyISAM只緩沖了索引;
6、索引,不同存儲(chǔ)引擎的索引并不太一樣;
注:文章屬原創(chuàng),如果轉(zhuǎn)發(fā),請(qǐng)標(biāo)注出處。
后續(xù)更多文章將更新在個(gè)人小站上,歡迎查看。
另外提供一些優(yōu)秀的IT視頻資料,可免費(fèi)下載!如需要請(qǐng)查看https://www.592xuexi.com
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/74832.html
摘要:是的擴(kuò)展格式和缺省的數(shù)據(jù)庫(kù)引擎。數(shù)據(jù)庫(kù)引擎都是造就靈活性的技術(shù)的直接產(chǎn)品,這項(xiàng)技術(shù)就是。估計(jì)這個(gè)插件式數(shù)據(jù)庫(kù)引擎的模型甚至能夠被用來(lái)為創(chuàng)建本地的提供器。能夠讓你在表格這一層指定數(shù)據(jù)庫(kù)引擎,所以它們有時(shí)候也指的是。 數(shù)據(jù)庫(kù)引擎介紹MySQL數(shù)據(jù)庫(kù)引擎取決于MySQL在安裝的時(shí)候是如何被編譯的。要添加一個(gè)新的引擎,就必須重新編譯MYSQL。在缺省情況下,MYSQL支持三個(gè)引擎:ISAM、M...
閱讀 1234·2021-09-10 10:51
閱讀 984·2019-08-30 15:53
閱讀 2792·2019-08-30 12:50
閱讀 1037·2019-08-30 11:07
閱讀 2051·2019-08-30 10:50
閱讀 3683·2019-08-29 18:47
閱讀 1372·2019-08-29 18:44
閱讀 1661·2019-08-29 17:01