MyISAM 和 InnoDB 有什么区别?

前言:MySQL 默认引擎变化

在 MySQL 5.5版本时,InnoDB 存储引擎取代了原先的引擎 MyISAM 成为新的默认存储引擎

那么我们要思考为什么 MySQL 开发者选择使用 InnoDB 呢?因为他们意识到了 MyISAM 引擎在许多方面的不足,以及一些对未来发展有局促性的缺陷,比如:

MyISAM 缺点

  • 不支持事务,不支持外键
  • 不支持行级锁,最小粒度为表级锁,易发生锁冲突
  • 崩溃后无法安全恢复

 随着科技的发展,现在大大小小的公司业务都会遇到一些并发安全的问题,倘若发生线程冲突造成数据读取/写入错误,会造成一定的后果,对用户体验也不好。所以在这种市场需求下 MySQL 也逐渐意识到并发安全的重要性,更换了对并发处理更好的 InnoDB 存储引擎,InnoDB 存储引擎弥补了 MyISAM 的并发性缺点,比如支持事务、外键、行级锁、安全恢复等。

适用场景不同

但是并不能代表 InnoDB 存储引擎是万能的,它在一些度方面不如  MyISAM ,以下是这两个引擎各自适合的场景:

MyISAM 适合 :

  1. count 偏多的计算(会默认计算并存储 count,不用每次都计算,提升了效率)
  2. 插入少,查询多
  3. 没有事务的需要

InnoDB 适合 : 

  1. 可靠性要求高、或者需要事务支持
  2. 表更新和查询频繁
  3. 易出现表锁定的场景

 支持功能不同

属性 MyISAM InnoDB
事务         不支持 支持
锁粒度 表级锁 行级锁
存储 拆分文件 表空间
隔离等级 所有
数据主键
MVCC 不支持 支持
缓存数据记录
数据库崩溃后的安全恢复 不支持 支持
性能

 

 

 

猜你喜欢

转载自blog.csdn.net/xmbcc777/article/details/130449968