前三天都是死磕数据结构,终于找到了那个满足于我们的最大赢家B+树,Mysql创建表的时候,可以自己选择存储引擎,那么它又是怎么在MyISAM中独占鳌头呢。
创建表选择存储引擎图
选择完引擎之后每一个表都可以拥有自己不同的引擎方式,最终我们创建出索引,变创建为索引B+树结构MyISAM主键索引数据结构如下:图
主键索引数据结构图最大的特点就是数据data和索引分离。上图可以看到每个父节点存储了8B的主键索引和6B字节点指针和B+树结构没有任何不同,重点在就在于叶子几点,他包含了两部分数据:索引+磁盘文件指针。这种结构是由MyISAM独特的存储方式决定的,比如:user_code表就由三部分组成,MYI文件,MYD文件和frm文件(新版本已经合并不在有frm文件)。
数据文件MYI文件存储的是索引,MYD存储数据,这样的好处就是索引比B+树叶子节点存储数更加的节省空间,数据的量级别更大。
同时由于这种结构一种非聚集索引,就是说明了他的结构特点,叶子节点数据和索引。并且在MyISAM联合索引和主键索引数据结构基本一致。结构决定它具有的优点就在于不需要很高的机器配置,查询速度比Iinnodb更快。myisam主要以查为主。
当然我们使用的mysql使用的Iinnodb存储引擎,那么他有怎么的结构呢?同时上篇中的那几个问题呢?小编将整理为一个正篇去解析。