文章原文:blog.ouyangsihai.cn >> InnoDB與MyISAM等存儲引擎對比
InnoDB存儲引擎介紹
InnoDB引擎是Mysql的默認的存儲引擎,他有很多自己的特性,下面一一列舉。
- 支持事務,InnoDB存儲引擎主要就是爲了在線事務處理(OLTP)的應用而設計的。
- 行鎖設計,支持外鍵,非鎖定讀。
- 支持多版本的併發控制(MVCC)來獲得高併發性。
- 提供了插入緩衝、二次寫、自適應哈希索引、預讀等高性能和高可用的功能。
上面這些算是 InnoDB 存儲引擎的一些特點了,也是它的優勢所在,爲什麼 InnoDB 引擎會使用如此廣泛,就是因爲它能有很好的性能。
MyISAM儲存引擎介紹
- 不支持事務,它的設計目標是面向在線分析的應用(OLAP)。
- 支持全文索引。
- 表鎖設計。
- 它的緩衝池只緩衝索引文件,不緩衝數據文件,所以 MyISAM 存儲引擎表由
MYD
和MYI
組成,前者存儲數據文件,後者存儲索引文件。
存儲引擎之間的對比
這一部分,主要簡要的介紹一下各個存儲引擎之間的差別,及主要的作用及特點。
特性對比
特性 | MyISAM | InnoDB | BDB | Memory | Archive | NDB |
---|---|---|---|---|---|---|
存儲限制 | 無 | 64TB | 無 | 有 | 無 | 有 |
事務 | 支持 | 支持 | ||||
鎖級別 | 表鎖 | 行鎖 | page | 表 | 行 | 行 |
MVCC(併發控制) | 支持 | 支持 | 支持 | |||
全文索引 | 支持 | |||||
集羣索引 | 支持 | |||||
數據緩存和索引緩存 | 支持 | 支持 | 支持 | |||
數據壓縮 | 支持 | 支持 | ||||
批量插入速度 | 高 | 低 | 高 | 高 | 很高 | 高 |
集羣數據庫支持 | 支持 | |||||
外鍵支持 | 支持 | |||||
適用場景 | 不需要事務的操作;插入、更新少,讀取頻繁;頻繁的統計計算。 | 需要事務的操作;更新數據需要使用行級鎖;大數據量讀寫;大型互聯網應用。 | 類似 InnoDB | 數據量不大,需要被頻繁的訪問,而且數據丟失不會對業務產生比較嚴重的影響。 | 存儲引擎基本上用於數據歸檔,作爲日誌表 | 集羣 |
存儲引擎特性介紹
存儲引擎 | 主要特點 |
---|---|
BDB | 可替代InnoDB的事務引擎,支持COMMIT、ROLLBACK和其他事務特性 |
Memory | 數據存儲在內存中,重啓或崩潰,數據消失,使用哈希索引 |
Archive | 只支持Insert和Select操作,支持索引,非常適合存儲歸檔數據, 目標:高速插入和壓縮功能 |
NDB | 集羣存儲引擎,數據全部放在內存中,高可用、高性能的集羣系統 |
Federated | 不存放數據,只是指向一臺遠程MySQL數據庫服務器上的表 |
Maria | 新開發引擎,用於取代MyISAM存儲引擎。 支持事務和非事務、緩存、索引文件、行鎖、MVCC功能 |
文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關注我的微信公衆號:好好學java
,獲取優質學習資源。