事务方面

InnoDB支持事务,MyISAM不支持事务。MySql的默认存储引擎为InnoDB

外键方面

InnoDB支持外键,MyISAM不支持,对一个包含外键的InnoDB表转为MYISAM会失败

索引层面

InnoDB是聚簇索引,MyISAM是非聚簇索引

MyISAM支持FULLTEXT类型的全文索引

InnoDB不支持FULLTEXT类型的全文索引,但是InnoDB可以使用sphinx插件支持全文索引,并且效果更好。

锁粒度方面

InnoDB最小粒度锁是行锁,MyISAM最小粒度锁是表锁

硬盘存储结构

MyISAM在磁盘上存储成三个文件,第一个文件的名字以表的名字开始,扩展名指出文件类型

.frm文件存储表的定义

数据文件的扩展名为.MYD(MYData)

索引文件的扩展名为.MYI(MYIndex)

 

InnoDB在磁盘上存储成两个文件

Frm文件:表的定义文件

Ibd文件:数据和索引存储文件。数据以主键进行聚集存储,把真正的数据保存在叶子节点中

 

聚簇索引和非聚簇索引

  聚簇索引(InnoDB)

将数据存储和索引放到一块,索引结构的叶子节点保存了行数据

表数据按照索引的顺序来存储的,也就是索引项的顺序与表中记录的物理顺序一致

InnoDB中,在聚簇索引之上船舰的索引称之为辅助索引,像复合索引,前缀索引,唯一索引等

1.聚簇索引默认是主键

2.如果表中没有定义主键,InnoDB会选择一个唯一非空索引替代

 3.如果没有这样的索引,InnoDB会在内部生成一个名为GEN_CLUST_INDEX的隐式的聚簇索引

非聚簇索引(MyISAM)

将数据与索引分开存储,表数据存储顺序与索引顺序无关

 

MyISAM索引查询数据过程

  非聚簇索引存储结构

 

mysam全文索引 myisam支持全文索引吗_mysam全文索引

 

 

  聚簇索引存储结构

 

mysam全文索引 myisam支持全文索引吗_数据_02