溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL 數(shù)據(jù)庫中MyISAM 和 InnoDB 的區(qū)別

發(fā)布時間:2020-07-23 22:03:28 來源:網(wǎng)絡(luò) 閱讀:705 作者:DemoHA 欄目:數(shù)據(jù)庫

首先要明白,在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支持。


向AI問一下細(xì)節(jié)

免責(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)容。

AI