Mysql 存储引擎的区别和比较
MyISAM存储引擎 MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。 MyISAM拥有较高的插入、查询速度,但不支持事务。 MyISAM主要特性有: 大文件(达到63位文件长度)在支持大文件的文件系统和操作系统上被支持。 当把删除、更新和插入操作混合使用的时候,动态尺寸的行产生更少碎片。这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块自动完成。 每个MyISAM表最大索引数是64,这可以通过重新编译来改变。每个索引最大的列数是16 NULL被允许在索引的列中,这个值占每个键的0~1个字节 可以把数据文件和索引文件放在不同目录(InnoDB是放在一个目录里面的) MyISAM引擎使用B+Tree作为索引结构, 叶节点的data域存放的是数据记录的地址 。 下图是MyISAM索引的原理图: 可以看出MyISAM的索引文件仅仅保存数据记录的地址。 在MyISAM中,主索引和辅助索引(Secondary key)在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复。 如果我们在Col2上建立一个辅助索引,则此索引的结构如下图所示: 同样也是一颗B+Tree,data域保存数据记录的地址。 因此,MyISAM中索引检索的算法为首先按照B