mysql,MyISAM和InnoDB对比
2019-02-16 本文已影响0人
悠悠行万里丶
MyISAM和 innodb 的实现上的区别?
1.一个聚簇一个非聚簇
聚簇索引保证关键字的值相近的元组存储的物理位置也相同(所以字符串类型不宜建立聚簇索引,特别是随机字符串,会使得系统进行大量的移动操作),且一个表只能有一个聚簇索引。因为由存储引擎实现索引,所以,并不是所有的引擎都支持聚簇索引。目前,只有solidDB和InnoDB支持。
INNODB在做SELECT的时候,要维护的东西比MYISAM引擎多很多:
1)数据块,INNODB要缓存,MYISAM只缓存索引块, 这中间还有换进换出的减少;
2)innodb寻址要映射到块,再到行,MYISAM记录的直接是文件的OFFSET,定位比INNODB要快
(phil 注: myisam 更新频率低,所以 索引变更少 . 所以允许每次更新 即更新主索引,也更新副索引,更新 offset)
3)INNODB还需要维护MVCC一致;虽然你的场景没有,但他还是需要去检查和维护
MVCC (Multi-Version Concurrency Control)多版本并发控制
(phil 注: 由于没有了多行,不需要判断 选取可见的那行数据)
myisam 表锁.牺牲了写性能,提高了读性能.