mysql数据库中常见的两种引擎分别是InnoDB和MYISAM,mysql默认使用MYISAM,两者的主要区别和选择考虑点都是需要注意,如果是面试的时候也经常会问到。
简单来讲,MYISAM比较粗暴,InnoDB比较精细。具体体现在哪些方面呢?主要如下:
- MYISAM只有表锁,一锁就锁整张表,非常的粗暴;InnoDB支持表锁和行锁,提供更加细粒度的控制,支持外键约束
- MYISAM不支持事务,InnoDB支持事务,并且提供事务的ACID支持(原子性、一致性、隔离性、持久性)添加链接描述
- MYISAM会保存行数,进行select count()时不需要全表扫描,InnoDB不会保存行数,select count()会进行权标扫描
- MYISAM只会缓存索引,InnoDB会缓存索引和数据
选择:
- 如果需要支持事务,或者需要支持外键只能选择InnoDB;
- 如果数据量大,更新数据频繁选择InnoDB;
- 数据量小点,并且大多数读操作,不需要支持事务,可以选择MYISAM.
更多详细的可以参见这儿