为什么说查询的时候myisam比innodb快?

来源:3-11 锁模块之MyISAM与InooDB关于锁方面的区别

qq_撞碎南墙_0

2019-02-16

从视频中老师你讲解Myisam使用的两颗索引树都是非聚类索引,都是现在树上查索引,再到存储的文件中查数据,而innodb如果使用主键查询的话不是直接就查到了吗?而且如果innodb使用辅助索引的话步骤是先在辅助索引的树上查,再到主键索引的树上查,这样的话不是和myisam的步骤差不多了么?

写回答

1回答

翔仔

2019-02-16

同学好,

因为INNODB在做SELECT的时候,要维护的东西比MYISAM引擎多很多:
1)数据块,INNODB要缓存,MYISAM只缓存索引块,  这中间还有换进换出的减少;

2)innodb寻址要映射到块,再到行,MYISAM记录的直接是文件的OFFSET,定位比INNODB要快
(myisam 更新频率低,所以 索引变更少 . 所以允许每次更新 即更新主索引,也更新付索引,更新 offset)

3)INNODB还需要维护MVCC一致;

MVCC (Multi-Version Concurrency Control)多版本并发控制
( 由于没有了多行,不需要判断 选取可见的那行数据)
  myisam 表锁.牺牲了写性能,提高了读性能.


0
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8441 学习 · 1872 问题

查看课程