InnoDB和MyISAM区别
InnoDB和MyISAM区别
1、InnoDB 支持事务,MyISAM不支持事务
2、InnoDB 支持外键,MyISAM 不支持
3、InnoDB 是聚集索引,MyISAM 是非聚集索引。聚簇索引的文件存放在主键索引叶子节点上,因此 InnoDB 必须要有主键,通过主键索引效率很高。但是辅助索引需两次查询,先查到主键然后再通过主键查到数据。所以主键不应过大,因为主键太大,其他索引也都会很大。而 MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针,主键索引和辅助索引是独立的
4、InnoDB和MyISAM都支持B+树索引,但InnoDB的B+树索引的叶子节点保存数据本身,而MyISAM的B+树索引的叶子节点保存数据的物理地址,即用户数据的指针
5、InnoDB不保存表的具体行数,执行 select count(*) from table 时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度快
6、InnoDB最小的锁粒度是行锁,MyISAM最小的锁粒度是表锁。一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞,并发访问受限