MENU

常用 MySQL 存储引擎 MyISAM、InnoDB 的区别

February 10, 2020 • 数据库

虽说经常使用 MySQL,但用得做多的还是一般的增删改查 SQL 语句,很少会触及到存储引擎相关的知识,而面试时很多时候都会被问到存储引擎的问题,另一方面深入了解存储引擎也是很必须的,所以就先简单了解下最常用的两款吧。

区别

1. 事务支持

  • MyISAM:不支持;
  • InnoDB:支持,提供 ACID 安全支持及 4 种隔离级别;

2. 外键支持

  • MyISAM:不支持;
  • InnoDB:支持;

3. 锁的粒度

  • MyISAM:表级锁,在进行操作时会进行锁表,避免了死锁,但并发性较差;
  • InnoDB:行级锁,与 MyISAM 相比粒度更小,并发性更强,但开销也更大;

选择

  • 需要事务支持要选择 InnoDB;
  • 查询操作十分频繁可选择 MyISAM,如果读写都很频繁就选 Innodb;
  • 从 MySQL 5.5 开始 InnoDB 已经是 MySQL 默认的存储引擎,没有特殊要求还是推荐使用 InnoDB;