普通索引和唯一索引

2019-10-31  本文已影响0人  bigFaceMm

查询过程:

查询会把数据从磁盘上读取到内存中,Innodb是按数据页为单位来读写的,每个数据页的大小为16KB;

普通索引较唯一索引多了一次回索引表比较,所以总体对性能影响不大,可以忽略,所以二者在查询上性能差不多

更新过程:

更新会用到一个概念change_buffer

唯一索引:唯一索引需要判断数据页的唯一性,如果需要插入数据的数据页不存在内存中,就要从磁盘中读取,所以数据总会在内从中,不需要使用change_buffer。

普通索引:在内存中存在要插入数据的数据页时,直接更新内存数据,但是如果内存中不存在时,不需要从磁盘中读取数据,更新语句可以直接记录在change_buffer中,等到查询或是后台定时脚本执行merger操作,将数据存储到磁盘中。

结论:

如果MySQL出现内存命中率低的时候,可以考虑是不是使用唯一索引的原因

一般情况下,需要大量写操作的数据库,推荐使用普通索引,唯一索引会增加IO消耗

redolog 主要节省的随机写磁盘的IO消耗,普通索引重要节省的是随机读磁盘的IO消耗

上一篇 下一篇

猜你喜欢

热点阅读