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