0
点赞
收藏
分享

微信扫一扫

简述MySQL存储引擎MyISAM 和 InnoDB 的区别

A邱凌 2022-01-27 阅读 74

  MySQL 5.5 之前,MyISAM 引擎是 MySQL 的默认存储引擎。

  5.5 版本之后,MySQL 引入了 InnoDB(事务性数据库引擎),MySQL 5.5 版本后默认的存储引擎为 InnoDB。

1.是否支持行级锁

  MyISAM 只有表级锁(table-level locking),而 InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。

  • 表级锁: MySQL 中锁定 粒度最大 的一种锁,对当前操作的整张表加锁,实现简单,资源消耗也比较少,加锁快,不会出现死锁。其锁定粒度最大,触发锁冲突的概率最高,并发度最低,MyISAM 和 InnoDB 引擎都支持表级锁。
  • 行级锁: MySQL 中锁定 粒度最小 的一种锁,只针对当前操作的行进行加锁。 行级锁能大大减少数据库操作的冲突。其加锁粒度最小,并发度高,但加锁的开销也最大,加锁慢,会出现死锁。

2.是否支持事务

  MyISAM 不提供事务支持。
  InnoDB 提供事务支持,具有提交(commit)和回滚(rollback)事务的能力。

3.是否支持外键

  MyISAM 不支持,而 InnoDB 支持。

4.是否支持数据库异常崩溃后的安全恢复

  MyISAM 不支持,而 InnoDB 支持。
  使用 InnoDB 的数据库在异常崩溃后,数据库重新启动的时候会保证数据库恢复到崩溃前的状态。这个恢复的过程依赖于 redo log 。

举报

相关推荐

0 条评论