MySQL各儲存引擎特點及選擇建議
MySQL官方儲存引擎比較常見的儲存引擎有:Innodb、MyISAM、Memory、Archive、NDB、BDB,第三方比較有名的:TokuDB、Infobright、InnfiniDB、XtraDB(Innodb增強版本)
官方儲存引擎的特點對比
MySQL儲存引擎比較
特性 |
MyISAM |
InnoDB |
Memory |
Archive |
NDB |
BDB |
儲存限制 |
No |
64TB |
Yes |
No |
Yes |
No |
事務 |
|
√ |
|
|
|
√ |
MVCC |
|
√ |
|
√ |
√ |
|
鎖粒度 |
Table |
Row |
Table |
Row |
Row |
Page |
B樹索引 |
√ |
√ |
√ |
|
√ |
√ |
雜湊索引 |
|
√ |
√ |
|
√ |
|
全文索引 |
√ |
5.6支援e文 |
|
|
|
|
叢集索引 |
|
√ |
|
|
|
|
資料緩衝 |
|
√ |
√ |
|
√ |
|
索引緩衝 |
√ |
√ |
√ |
|
√ |
|
資料壓縮 |
√ |
|
|
√ |
|
|
批量插入 |
高 |
相對低 |
高 |
非常高 |
高 |
高 |
記憶體消耗 |
低 |
高 |
中 |
低 |
高 |
低 |
外鍵支援 |
|
√ |
|
|
|
|
複製支援 |
√ |
√ |
√ |
√ |
√ |
√ |
查詢快取 |
√ |
√ |
√ |
√ |
√ |
√ |
備份恢複 |
√ |
√ |
√ |
√ |
√ |
√ |
叢集支援 |
|
|
|
|
√ |
|
TokuDB:支援資料壓縮,支援高速寫入的一個引擎,但是不適合update多的情境
Infobright/InfiniDB:基於列儲存的引擎,適用於OLAP環境,Infobright社區版只支援load data操作
選擇儲存引擎及建議:根據不同的業務去選擇適合業務的儲存引擎,MySQL的儲存引擎很多,不同的庫,不同的表都支援選擇不同的儲存引擎,推薦同一個庫用同一種儲存引擎,因為不同儲存引擎的表之間join操作比較慢
常用推薦:Innodb,非特殊的情境,Innodb儲存引擎一般都可以滿足需求
如果有大資料寫入批量讀取操作:TokuDB
針對OLAP可以考慮使用InfiniDB/Infobright
如果針對資料量小要求速度快,無持久化要求:Memory
盡量不要選擇MyISAM儲存引擎:因為MyISAM儲存引擎只能用的單個CPU,記憶體只能用到4個G,記憶體裡只有索引,而且並發能力差。
本文永久更新連結地址: