MySQL存储引擎
MyISAM存储引擎
MyISAM存储引擎是非聚集索引(索引和数据MYI/MYD两个文件)。在磁盘上一张表分为三个文件存储。
数据以MyISAM形式存储,MySQL查询语句执行过程:select * from table where col=’49’ ,where条件的字段如果是索引字段,先去myi索引文件根据B+树特性定位索引49的元素(树的根节点是常驻内存的),从根节点开始找,找到15和56中间的指针,把指针指向的节点load进内存,在比对找到索引为49的内存地址指针,去myd文件里快速定位到索引49对应数据的位置。
innoDB存储引擎
innoDB存储引擎在磁盘中的存储文件(idb文件,索引和数据)
innoDB是聚集索引,myisam是非聚集索引,区别就是索引和数据是否分开存储
innoDB表数据就是B+树结构,必须有主键,如果你没建立主键,会默认选择一列唯一数据,如果没有就会自动建立一个主键后台自动维护(必须有一列来维护表数据)主键推荐整型自增(相比uuid所占空间更小,比较操作更快),自增是因为维护索引数据文件只在树结构插入大的值,不用重新维护树结构,如果是插入中间值,插入的节点已经满了,整棵树需要重新维护