MySQL存储引擎InnoDB与MyISAM比较
1.文件存储形式
InnoDB和MyISAM都存储在磁盘上,但是有着不同的文件格式。
InnoDB: .frm:存放的是表结构
.ibd:存放数据文件和索引文件,使用的是B+Tree组织的一个索引结构文件
MyISAM: .frm存放表结构
.MYI:存放索引数据
.MYD:存放实际数据
2.各种类型上的对比
2.B+树数据结构
对于InnoDB存储引擎来说,其叶子结点直接存放的是数据
注意:
-
InnoDB是通过B+树结构对主键创建索引的,然后叶子结点存放的是数据;如果没有主键,会选择唯一键作为主键;如果没有唯一键会生成一个6位的row_id来作为主键。
-
如果创建索引的键是其他字段,那么叶子结点存放的是该记录的主键,然后在通过主键索引查找对应记录。即为回表。
回表:
如图中所示,如果以name创建索引,那么叶子结点会存放表中与name对应的主键值,在查找到主键后,再根据主键索引在进行一次查找,最后获得数据。
而对于MyISAM来说,其存放的是数据的地址,需要在.MYD文件中查找数据。
SAM来说,其存放的是数据的地址,需要在.MYD文件中查找数据。