InnoDB与MyISAM 聚集索引与非聚集索引

InnoDb: 支持acid事务,支持行级锁和外键约束,容灾性好,可建立缓冲池存数据及索引,不保存行数,锁粒度为行。 MyLASM: 不支持事务,外键,读写时需锁表,效率低,保存了行数,读多于写时可选择。复合索引速度快于innodb

聚簇索引和非聚簇索引: InnoDB使用的是聚簇索引,MyLASM使用非聚簇索引,对于聚簇索引存储来说,行数据和主键B+树存储在一起,辅助键B+树只存储辅助键和主键,主键和非主键B+树几乎是两种类型的树。对于非聚簇索引存储来说,主键B+树在叶子节点存储指向真正数据行的指针,而非主键。

InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用"where id = 14"这样的条件查找主键,则按照B+树的检索算法即可查找到对应的叶节点,之后获得行数据。若对Name列进行条件搜索,则需要两个步骤:第一步在辅助索引B+树中检索Name,到达其叶子节点获取对应的主键。第二步使用主键在主索引B+树种再执行一次B+树检索操作,最终到达叶子节点即可获取整行数据。

经验分享 程序员 微信小程序 职场和发展