MySQL数据库MyISAM和InnoDB存储引擎的对比

MyISAM

①   不支持事务(事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功要么全部失败)。
②   表级锁定(更新时锁整个表)
③   读写互相阻塞:不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写入,但读本身不会阻塞另外的读。
④   只会缓存索引:MyISAM可以通过key_buffer_size缓存索引,以大大提高访问性能,减少磁盘I/O,但这个缓存区只会缓存索引,而不会缓存数据。
⑤   读取速度较快,占用资源相对少。
⑥   不支持外键约束,但支持全文索引。
⑦   5.5.5前为默认存储引擎。

适合的业务场景:
1.  不需要事务支持的业务
2.  读数据比较多的应用
3.  数据库修改较少的业务
4.  对数据一致性要求不是非常高的业务
5.  硬件资源比较差的机器可以用MyISAM

InnoDB

①   支持事务:支持4个事务隔离级别,支持多版本读。
②   行级锁定(更新时一般是锁定当前行):通过索引实现,全表扫描仍然会是表锁。
③   读写阻塞与事务隔离级别相关。
④   具有非常高效的缓存特性:能缓存索引,也能缓存数据。
⑤   整个表和主键以Cluster方式存储,组成一颗平衡树。
⑥   所有Secondary Index都会保存主键信息。
⑦   支持分区,表空间,类似Oracle数据库。
⑧   支持外键约束,5.5以前不支持全文索引,之后版本支持了。
⑨   和MyISAM相比对硬件资源要求比较高。

适合的业务场景:
1.  需要事务支持的业务
2.  行级锁定对高并发有很好的适应能力,但需要确保查询时通过索引完成。
3.  读写及更新都很频繁的场景
4.  数据一致性要求较高的业务
5.  硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,尽可用减少磁盘I/O。

事务隔离级别:
四种隔离级别说明

隔离级别脏读不可重复读幻读
未提交读可能可能可能
已提交读不可能可能可能
可重复读不可能不可能可能
可串行化不可能不可能不可能
脏读 :一个事务读取到另一事务未提交的更新数据。

不可重复读 : 在同一事务中,多次读取同一数据返回的结果有所不同, 换句话说, 后续读取可以读到另一事务已提交的更新数据。
相反, “可重复读”在同一事务中多次读取数据时, 能够保证所读数据一样, 也就是后续读取不能读到另一事务已提交的更新数据。

幻读 :一个事务读到另一个事务已提交的insert数据。

MyISAM与InnoDB对比表

MySQL数据库MyISAM和InnoDB存储引擎的对比

转载于:https://blog.51cto.com/ilctc/2095243

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值