Welcome 微信登录

首页 / 数据库 / MySQL / MySQL各存储引擎特点及选择建议

MySQL官方存储引擎比较常见的存储引擎有:Innodb、MyISAM、Memory、Archive、NDB、BDB,第三方比较有名的:TokuDB、Infobright、InnfiniDB、XtraDB(Innodb增强版本)官方存储引擎的特点对比
MySQL存储引擎比较
特性MyISAMInnoDBMemoryArchiveNDBBDB
存储限制  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,内存里只有索引,而且并发能力差。本文永久更新链接地址