之前腾讯面试被问到了,回答的不好,因此自己好好总结一下,方便复习.
MySQL的两个常用存储引擎是InnoDb 和MyISAM,其中:
InnoDB(默认) :是事务优先的 ,因此适合高并发操作
MyISAM : 是性能优先的,因此查询性能会好一丢丢
他俩的主要区别是:
1.InnoDB支持事务,而MyISAM不支持事务.由于目前企业的应用中并发的情况非常普遍,所以这也是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一;
2. InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。很简单,为了能够支持事务,保证事务的ACID特性,InnoDB 就必须支持更精细的行锁才行,所以高并发的情况下只能选择InnoDB;
3.InnoDB 是聚集索引,MyISAM 是非聚集索引。聚簇索引的文件存放在主键索引的叶子节点上,因此 InnoDB 必须要有主键,通过主键索引效率很高。
但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。
而 MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。
MySQL的常用存储引擎InnoDb 和MyISAM 的区别
原文:https://www.cnblogs.com/TonyDeBlog/p/13599008.html