引擎介绍
1.InnoDB引擎:具备外键支持功能的事务存储引擎
回顾:外键约束,很多场景下不建议使用,外键会影响数据添加、删除的效率问题,因此开发中先在应用层进行了判断处理。所以使用InnoDB的主要原因不是它支持外键,而是它支持事务。
优点:
(1) 支持外键
(2) 支持事务
(3)频繁执行更新和删除操作,InnoDB效率更高
(4)InnoDB是行级锁,锁的粒度小
(5)InnoDB是为处理巨大数据量的最大性能设计
缺点:
(1)相比MYISAM存储引擎,如果表的数据比较少,以增加和查询操作为主,InnoDB的效率差一些
(2)MyISAM只缓存索引,不缓存真实数据;InnoDB不仅缓存索引还要缓存真实数据,对内存要求较高
,而且内存大小对性能有决定性的影响。
2.MYISAM引擎:主要的非事务处理存储引擎
5.5之前默认的存储引擎
缺点:
(1)MYISAM不支持外键、行锁、事务,有一个毫无疑问的缺点就是崩溃后无法完全恢复
(2)访问的速度快
,对事务完整性没有要求或者以SELECT、INSERT为主的应用
(3)针对数据统计有额外的常数存储。故而 count(*) 的查询效率很高
应用场景:只读应用或者以读为主的业务
两种引擎各有特点,可以针对不同的数据表,选择不同的存储引擎
对比项 | MyISAM | InnoDB |
---|---|---|
外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行表锁 | 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 | 行锁,操作时只锁某一行,不对其它行有影响,适合高并发的操作 |
缓存 | 只缓存索引,不缓存真实数据 | 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响 |
自带系统表使用 | Y | N |
关注点 | 性能:节省资源、消耗少、简单业务 | 事务:并发写、事务、更大资源 |
默认安装 | Y | Y |
默认使用 | N | Y |