文章原文:> InnoDB與MyISAM等存儲引擎對比">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
,獲取優質學習資源。