是什么
- 了解这个问题,需要先了解innobd和myisam先。这两个是数据库的实现引擎,其中innodb是比较新的,myisam是5.5之前用的,双方各自有各自的优点。详情请看
问题解答(需要对于innodb和myisam有一定的理解才看得懂)
为什么myisam查询比innodb快?
主要原因有三点:
- 查询的时候,由于innodb支持事务,所以会有mvvc的一个比较。这个过程会损耗性能。
- 查询的时候,如果走了索引,而索引又不是主键索引,此时,由于innodb是聚簇索引,会有一个回表的过程,即:先去非聚簇索引树(非主键索引树)中查询数据,找到数据对应的key之后,再通过key回表到聚簇索引树,最后找到需要的数据。而myisam是非聚集索引,而且叶子节点存储的是磁盘地址,所以,查询的时候查到的最后结果不是聚簇索引树的key,而是会直接去查询磁盘。详解
- 锁的一个损耗,innodb锁支持行锁,在检查锁的时候不仅检查表锁,还要看行锁。