小言_互联网的博客

MySQL中MyISAM和InnoDB的区别

361人阅读  评论(0)

MyISAM和InnoDB的区别

  1. MyISAM只支持表级锁,InnoDB支持行级锁
  2. MyISAM不支持事务,InnoDB支持事务
  3. MyISAM不支持外键,InnoDB支持外键
  4. MyISAM支持全文索引,InnoDB不支持全文索引
  5. MyISAM本身就存储了表的数据行数,InnoDB则没有,查询总行数MyISAM更快,但是加了查询条件之后两者就没有区别了

MyISAM和InnoDB的选择:

  1. 看是否需要事务支持?
  2. 是否需要外键支持?
  3. 是否需要全文索引?

InnoDB的行锁模式有:共享锁,排他锁,意向共享锁(表锁),意向排他锁(表锁),间隙锁。
注意:当语句没有使用索引,InnoDB不能确定操作的行,这个时候就要使用意向锁,也就是表锁。

聚簇索引和非聚簇索引

聚簇索引主要应用于InnoDB
非聚簇索引主要应用于MyISAM

聚集索引,表数据按照索引的顺序来存储的,也就是索引项的顺序与表中记录的物理顺序一致。对于聚集索引,叶子节点即存储了真实的数据行,不再有另外单独的数据页。在一张表上最多只能创建一个聚集索引,因为真实数据的物理顺序只能有一种。

非聚集索引,表数据存储顺序与索引顺序无关。对于非聚集索引,叶子节点包含索引字段值及指向数据页、数据行的逻辑指针,其行数量与数据表行数据量一致。


转载:https://blog.csdn.net/weixin_44502173/article/details/101374882
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场