MySQL存储引擎InnoDB与MyISAM比较

1.文件存储形式

InnoDB和MyISAM都存储在磁盘上,但是有着不同的文件格式。

InnoDB: .frm:存放的是表结构
.ibd:存放数据文件和索引文件,使用的是B+Tree组织的一个索引结构文件

MyISAM: .frm存放表结构
.MYI:存放索引数据
.MYD:存放实际数据

2.各种类型上的对比

MySQL存储引擎InnoDB与MyISAM比较

2.B+树数据结构

对于InnoDB存储引擎来说,其叶子结点直接存放的是数据

MySQL存储引擎InnoDB与MyISAM比较

注意:

  • InnoDB是通过B+树结构对主键创建索引的,然后叶子结点存放的是数据;如果没有主键,会选择唯一键作为主键;如果没有唯一键会生成一个6位的row_id来作为主键。

  • 如果创建索引的键是其他字段,那么叶子结点存放的是该记录的主键,然后在通过主键索引查找对应记录。即为回表

    回表

    MySQL存储引擎InnoDB与MyISAM比较

    如图中所示,如果以name创建索引,那么叶子结点会存放表中与name对应的主键值,在查找到主键后,再根据主键索引在进行一次查找,最后获得数据。

而对于MyISAM来说,其存放的是数据的地址,需要在.MYD文件中查找数据。

SAM来说,其存放的是数据的地址,需要在.MYD文件中查找数据。
MySQL存储引擎InnoDB与MyISAM比较

相关文章: