mysql的引擎有哪幾種,innodb Myisam 的區(qū)別?

數(shù)據(jù)庫有以下集中引擎:ISAM、MYISAM、HEAP、CSV、BLACKHOLE、ARCHIVE、PERFORMANCE_SCHEMA、InnoDB、 Berkeley、Merge、Federated和Cluster/NDB等。

innodb和Myisam的區(qū)別?

  • MyIsam是MySQL的默認(rèn)數(shù)據(jù)庫引擎,有早期的ISAM(Indexed Sequential Access Method:有索引的順序訪問方法)所改良。雖然性能極佳,但是有一個(gè)缺點(diǎn):不支持事務(wù)處理。不過,在這幾年的發(fā)展下,MySQL也導(dǎo)入了Innodb,以強(qiáng)化參考完整性與并發(fā)違規(guī)處理機(jī)制,后來就主鍵取代MyISAM。
  • innodb,是MySQL的數(shù)據(jù)庫引擎之一,為MySQL AB發(fā)布binary的標(biāo)準(zhǔn)之一。Innodb由Innobase Oy公司所開發(fā),2006年五月由甲骨文公司并購。與傳統(tǒng)的ISAM與MyISAM相比,Innodb的最大特色是支持了ACID兼容的事務(wù)功能,類似于PostgreSQL。目前InnoDB采用雙軌制授權(quán),一是GPL授權(quán),另一是專有軟件授權(quán)。

主要區(qū)別

  • 兩種類型最主要的差別就是Innodb支持事務(wù)處理與外鍵和行級(jí)鎖。而MyISAM不支持,所以MyISAM往往就很容易被人認(rèn)為只適合在小項(xiàng)目中使用。
(1)存儲(chǔ)結(jié)構(gòu)

MyISAM:每個(gè)MyISAM在磁盤上存儲(chǔ)成三個(gè)文件。第一個(gè)文件的名字以表的名字開始,擴(kuò)展名支出文件類型。.frm文件存儲(chǔ)表定義。數(shù)據(jù)文件的擴(kuò)展名為.MYD(MYData)。索引文件的擴(kuò)展名是.MYI(MYIndex)。
Innodb:所有表都保存在同一個(gè)數(shù)據(jù)文件中(也可能是多個(gè)文件,或者是獨(dú)立的表空間文件),Innodb表的大小值受限于操作系統(tǒng)文件的大小,一般為2GB。

(2)存儲(chǔ)空間

MyISAM:可被壓縮,存儲(chǔ)空間較小。支持三種不同的存儲(chǔ)格式:靜態(tài)表(默認(rèn),但是注意數(shù)據(jù)末尾不能有空格,會(huì)被去掉)、動(dòng)態(tài)表、壓縮表。
Innodb:需要更多的內(nèi)存和 存儲(chǔ),它會(huì)在主內(nèi)存建立其專用的緩存池用于告訴緩沖數(shù)據(jù)和索引。

(3)可移植性、備份及恢復(fù)

MyISAM:數(shù)據(jù)是以文件的形式存儲(chǔ),所以在跨平臺(tái)的數(shù)據(jù)轉(zhuǎn)移中會(huì)很方便。在備份和恢復(fù)時(shí)可單獨(dú)針對(duì)某個(gè)表進(jìn)行操作。
Innodb:免費(fèi)的方案可以是拷貝數(shù)據(jù)文件、備份binlog,或者用mysqldump,在數(shù)據(jù)量達(dá)到幾十G的時(shí)候就相對(duì)痛苦了。

(4)構(gòu)造上的區(qū)別

MyISAM在磁盤上存儲(chǔ)成三個(gè)文件,其中.frm文件存儲(chǔ)表定義;.MYD (MYData)為數(shù)據(jù)文件;.MYI (MYIndex)為索引文件。
而innodb是由.frm文件、表空間(分為獨(dú)立表空間或者共享表空間)和日志文件(redo log)組成。

(5)事務(wù)上的區(qū)別

myisam不支持事務(wù);而innodb支持事務(wù)。

(6)鎖上的區(qū)別

myisam使用的是表鎖;而innodb使用的行鎖(當(dāng)然innodb也支持表鎖)。
表級(jí)鎖:直接鎖定整張表,在鎖定期間,其他進(jìn)程無法對(duì)該表進(jìn)行寫操作,如果設(shè)置的是寫鎖,那么其他進(jìn)程讀也不允許,因此myisam支持的并發(fā)量低,但myisam不會(huì)出現(xiàn)死鎖;
行級(jí)鎖:只對(duì)指定的行進(jìn)行鎖定,其他進(jìn)程還是可以對(duì)表中的其他行進(jìn)行操作的。因此行鎖能大大的減少數(shù)據(jù)庫操作的沖突,但有時(shí)會(huì)導(dǎo)致死鎖。

(7)是否支持外鍵的區(qū)別

myisam不支持外鍵,innodb支持外鍵

(8)myisam只把索引都load到內(nèi)存中,而innodb存儲(chǔ)引擎是把數(shù)據(jù)和索引都load到內(nèi)存中 ,innob不支持全文索引

當(dāng)需要使用數(shù)據(jù)庫事務(wù)時(shí),該引擎當(dāng)然是首選。由于鎖的粒度更小,寫操作不會(huì)鎖定全表,所以在并發(fā)較高時(shí),使用Innodb引擎會(huì)提升效率。

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

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

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