存储引擎就是指表的类型;他的功能就是接收上层传下来的指令,然后对表中的数据进行提取或写入操作;
一、引擎介绍:
1.1 InnoDB 引擎:具备外键支持功能的事务存储引擎
InnoDB是为处理巨大数据量的最大性能设计;
优点:
1、支持外键;
2、InnoDB是MySQL的默认事务型引擎,他被设计用来处理大量的短期事务,可以确保事务的完整提交和回滚;
3、除了增加和查询外,还需要更新,删除操作,那么优先考虑InnoDB存储引擎;(在需要更新、删除操作的性能好)
4、行锁:操作时候只锁定某一行,不对其他行有影响,适合高并发的操作;
缺点:
1、InnoDB的处理效率差一些;
2、对内存要求较高;MyISAM只缓存索引,不缓存真实数据,InnoDB不仅缓存索引还要缓存真是数据,对内存要求较高,内存大小对性能有决定性的影响;
1.2 MyISAM引擎:主要的非事务处理存储引擎
5.5之前的默认存储引擎;
MyISAM提供了大量的特性;全文索引、压缩、空间函数等,但是MyISAM不支持事务、行级锁、外键,有一个毫无疑问的缺陷就是崩溃之后无法安全恢复;
优势:
1、访问速度快,对事务完整性没有要求或以SELECT、INSERT为主的应用(涉及到添加或者修改就是InnoDB好一些);
2、针对数据统计有额外的常熟存储,所以count(*)的查询效率很高;
应用场景:只读应用或者以读为主的业务;
面试题:InnoDB和MyISAM两者的区别
对比项 | MyISAM | InnoDB |
---|---|---|
外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行表锁 | 表锁:即使操作一条数据也会锁住整个表,不适合高并发的操作 | 行锁:操作时只锁某一行,不对其他行有影响,适合高并发的操作; |
缓存 | 只缓存索引,不缓存正式数据 | 不仅缓存索引还要缓存真实数据,对内存要求高,而且内存的大小决定对性能有决定性的影响; |
自带系统表使用 | Y | N |
关注点 | 性能:节省资源、消耗少、简单业务 | 事务:并发、事务、更大资源 |
默认安装 | Y | Y |
默认使用 | N | Y |
二、补充了解内容
Archive引擎:用于数据存档
适合存储大量的独立的作为历史记录的数据,有很高的插入速度,对查询支持较差;
Memory引擎:置于内存的表
数据存储在内存,表结构存储在磁盘