您好,登錄后才能下訂單哦!
首先要明白,在MySQL數(shù)據(jù)庫忠中的存儲引擎是基于表的,而不是基于數(shù)據(jù)庫的。
講述兩者區(qū)別:
InnoDB 存儲引擎,主要面向 OLTP(Online Transaction Processing,在線事務(wù)處理)方面的應(yīng)用,是第一個完整支持 ACID 事務(wù)的存儲引擎(BDB 第一個支持事務(wù)的存儲引擎,已經(jīng)停止開發(fā))。
特點:
行鎖設(shè)計、支持外鍵;
支持類似于 Oracle 風(fēng)格的一致性非鎖定讀(默認(rèn)情況下讀取操作不會產(chǎn)生鎖);
InnoDB 將數(shù)據(jù)放在一個邏輯的表空間中,由 InnoDB 自身進(jìn)行管理。從MySQL4.1 版本開始,可以將每個 InnoDB 存儲引擎的表單獨存放到一個獨立的ibd 文件中;
InnoDB 通過使用 MVCC(多版本并發(fā)控制:讀不會阻塞寫,寫也不會阻塞讀)來獲得高并發(fā)性,并且實現(xiàn)了 SQL 標(biāo)準(zhǔn)的 4 種隔離級別(默認(rèn)為 REPEATABLE 級別);
InnoDB 還提供了插入緩沖(insert buffer)、二次寫(double write)、自適應(yīng)哈希索引(adaptive hash index)、預(yù)讀(read ahead)等高性能和高可用的功能;
InnoDB 采用了聚集(clustered)的方式來存儲表中的數(shù)據(jù),每張標(biāo)的存儲都按主鍵的順序存放(如果沒有顯式的在建表時指定主鍵,InnoDB 會為每一行生成一個 6 字節(jié)的 ROWID,并以此作為主鍵);
InnoDB 表會有三個隱藏字段:除了上面提到了 6 字節(jié)的 DB_ROW_ID 外,還有6 字節(jié)的B_TX_ID(事務(wù) ID)和 7 字節(jié)的 DB_ROLL_PTR(指向?qū)?yīng)回滾段的地址)。這個可以通過 innodb monitor 看到;
MyISAM 存儲引擎是 MySQL 官方提供的存儲引擎,主要面向OLAP(Online Analytical Processing,在線分析處理)方面的應(yīng)用。
特點:
不支持事務(wù),支持表所和全文索引。操作速度快;
MyISAM 存儲引擎表由 MYD 和 MYI 組成,MYD 用來存放數(shù)據(jù)文件,MYI 用來存放索引文件。
MySQL 數(shù)據(jù)庫只緩存其索引文件,數(shù)據(jù)文件的緩存交給操作系統(tǒng)本身來完成;
MySQL5.0 版本開始,MyISAM 默認(rèn)支持 256T 的單表數(shù)據(jù);
最后總結(jié)一下:
1、InnoDB支持事物,而MyISAM不支持事物;
2、InnoDB支持行級鎖,而MyISAM支持表級鎖;
3、InnoDB支持MVCC, 而MyISAM不支持;
4、InnoDB支持外鍵,而MyISAM不支持;
5、InnoDB不支持全文索引,而MyISAM支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。