之前稍微总结了一下mysql为什么用B+树的数据结构存储以及联合索引为何失效的原理,本文是索引三部曲的最后一文。总结一下,mysql底层是如何通过索引找到一条存储的数据的。
这个总结,不可避免的就要对比一下mysql的两大存储引擎MyISAM和innodb了。
对比MYISAM和INNODB
1、事务方面
InnoDB支持事务,MyISAM不支持事务,这是Mysql将默认的存储引擎从MyISAM变成InnoDB的重要原因之一,数据库不支持事务确实孤儿了。
2、外键方面
I支持外键,M不支持外键,所以对于包含外键的I表转为M会失败。
3、索引层面
I是聚集(聚簇)索引,M是非聚集(非聚簇)索引,这也是本文的重点。
M支持FULLTEXT类型的全文索引,I不支持,但是I可以使用sphinx插件支持全文索引,而且效果很好,同时mysql在5.7以后,innodb也支持FULLTEXT类型的全文索引了。
4、锁粒度方面
I最小的锁粒度是行锁,M是表锁,这个表锁很孤儿ÿ