一.引擎介绍
mysql数据库引擎取决于mysql安装的时候如何进行编译.要添加一个新的引擎就必须重新编译.mysql5.7源码安装和mysql5.7源码安装,,通常在缺省情况下,mysql支持三大引擎:ISAM,MYISAM和HEAP(堆),另外两种类型INNODB和BERKLEY,也是常常使用的,如果以上的数据库引擎都不符合我们的需要,我们也可以使用MYSQL+API自定义引擎.
1.ISAM
适用于:数据库查询的次数远大于更新的次数
优点:读取操作速度快,而且不占用大量内存和存储资源
缺点:不支持事务,不支持外键,不能够容错(如果你的硬盘坏了,数据是无法恢复的)
解决方法:备份文件
2.MYISAM
简介:是ISAM的扩展格式和缺省数据库引擎,包含ISAM里面所有的内容
升级:在ISAM的基础上提供了索引,字段管理,表格锁定机制(优化了多并发),修复数据库文件的MyISAMCHK工具,恢复浪费空间的 MyISAMPACK工具等.
代价:需要经常运行optimize table命令用来恢复和更新良妃的空间.
优点:弥补了ISAM的部分不足之处,读取速度快.
缺点:写的速度比较慢并且不能在表损坏后恢复数据.不支持事务和外键
3.HEAP
简介:HEAP允许只驻留在内存里的临时表格。
优点:驻留在内存里让HEAP要比ISAM和MYISAM都快.
缺点:管理的数据是不稳定的.(如果在关机之前没有进行保存,那么所有的数据都会丢失。)
4.InnoDB
优点:支持事务,支持外键,
缺点:比以上三个数据库引擎慢很多.
5.自定义引擎
MYSQL+API:通过这些东西自己组装适合自己的引擎
二.几种数据库引擎的比较
1.MyISAM与InnoDB的区别
- MYISAM中的表强调的是性能;而InnoDB强调的是结构
- 执行数度比InnoDB类型更快
- InnoDB支持事务,MYISAM支持
- InnoDB支持索引,
- InnoDB支持外键,
- InnoDB支持行级锁
- InnoDB不支持fulltext类型的索引,
- 不保存表的具体行数:如果要查看这个表的行数,需要遍历整个表.而MYISAM则只需要简单的读取就可以了.
- AUTO_INCREMENT:必须包含含有该字段的索引,MYISAM可以和其他字段一起建立联合索引.
- DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
三.适用范围
1.InnoDB
- 可靠性要求比较高,或者要求事务
- 表更新和查询都相当的频繁,并且表锁定的机会比较大的情况指定数据引擎的创建
2.MyISAM
- 做很多count 的计算
- 插入不频繁,查询非常频繁
- 没有事务