Skip to content

Latest commit

 

History

History
18 lines (14 loc) · 1.04 KB

InnoDB与MyISAM的区别.md

File metadata and controls

18 lines (14 loc) · 1.04 KB

InnoDB与MyISAM的区别

  1. 默认。MySQL现在默认存储引擎是InnoDB;5.5之前默认使用MyISAM。
  2. 事务。InnoDB支持事务;MyISAM不支持事务。
  3. 索引。InnoDB的索引和数据是一体的,聚簇索引的B+树叶子节点上存储数据,非聚簇索引的叶子节点上存储主键;MyISAM的索引与数据是分开的,所有索引的叶子节点上存储的都是指向数据文件的指针。
  4. 锁。InnoDB的最小的锁的粒度是行锁;MyISAM支持的最小粒度的锁是表锁。
  5. 外键。InnoDB支持外键;MyISAM不支持外键。
  6. 计数。InnoDB在执行count()时需要遍历整张表;MyISAM会维护一个表中数据条数的变量。
  7. 应用场景。InnoDB主要应用于需要事务支持,修改较为频繁的场景。MyISAM在查询和计数需求比较多的场景下性能较好。

对于查询需求:

MyISAM没有回表操作。而且MyISAM不需要维护MVCC。

总结:

  • InnoDB适合修改操作频繁和支持事务的场景。
  • MyISAM适合查询和计数频繁的场景。