一、InnoDB简介
InnoDB是事务型数据库的首选引擎,MySQL5.5.5之后,InnoDB作为默认存储引擎。主要特性:
- InnoDB给MySQL提供了具有提交、回滚和奔溃恢复能力的事务安全存储引擎。InnoDB锁定在行级并且也在select语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。
- InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘的关系数据库引擎所不能匹敌的。
- InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引存在一个逻辑表空间中,表空间可以包含数个文件。InnoDB表可以是任何尺寸,即使在文件尺寸被限制在2GB的操作系统上。
- InnoDB支持外键完整性约束。
- InnoDB被用在众多需要高性能的大型数据库站点上。
二、MyISAM简介
MyISAM拥有较高的插入、查询速度,但不支持事务。MySQL5.5.5之前的版本,MyISAM是默认引擎。主要特性:
- BLOB和TEXT列可以被索引
- NULL值被允许在索引列中,这个值占每个键的0~1个字节。
- 所有数字键值以高字节优先被存储以允许一个更高的索引压缩。
- 可以把数据文件和索引文件放在不同目录。
- 每个字符列可以有不同的字符集。
三、综合对比
功能 |
InnoDB | MyISAM |
---|---|---|
存储限制 |
64TB | 256TB |
支持事务 |
√ |
× |
支持全文索引 |
× |
√ |
支持数索引 |
√ |
√ |
支持哈希索引 |
× |
× |
支持数据缓存 |
√ |
× |
支持外键 |
√ |
× |
四、总结
如果要提供提交、回滚和奔溃恢复能力的事务安全能力,并要求实现并发控制,InnoDB是个很好的选择;如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率。
参考文献:[1]李波.MySQL从入门到精通[M].北京:清华大学出版社,2015:37-39