mysql普通,唯一索引

51 阅读1分钟

索引上一节讲了是一个目录,可以快速定位到想要的东西。索引的内部是一棵树,所有的数据都是一片片叶子。

image.png

查询过程

普通索引:找到第一个满足条件的叶子,会继续找下一片叶子,直到找不到为止。

唯一索引:找到第一个满足条件的叶子,就不会继续往下找。

这两个在查找速度上没多大区别。

更新过程

change buffer

一个临时存放数据的地方,位于内存中。如果要插入数据,先放在内存的change buffer,等空闲时,再把磁盘数据页和内存的change buffer合并数据。

普通索引:将更新记录在changebuffer,结束。

唯一索引:将数据页读入内存,判断没有冲突,插入这个值,结束。

两者的区别是少了一个判断。

redo log 和 change buffer

  • redo log:如果内存中有数据页直接更新内存,数据页在磁盘里,就先写入change buffer。这两步操作记录到了redo log里。解决磁盘随机写的问题。
  • change buffer:内存中有数据页直接返回,磁盘数据页读到内存,从内存中取数据。解决磁盘随机读的问题。