索引上一节讲了是一个目录,可以快速定位到想要的东西。索引的内部是一棵树,所有的数据都是一片片叶子。
查询过程
普通索引:找到第一个满足条件的叶子,会继续找下一片叶子,直到找不到为止。
唯一索引:找到第一个满足条件的叶子,就不会继续往下找。
这两个在查找速度上没多大区别。
更新过程
change buffer
一个临时存放数据的地方,位于内存中。如果要插入数据,先放在内存的change buffer,等空闲时,再把磁盘数据页和内存的change buffer合并数据。
普通索引:将更新记录在changebuffer,结束。
唯一索引:将数据页读入内存,判断没有冲突,插入这个值,结束。
两者的区别是少了一个判断。
redo log 和 change buffer
- redo log:如果内存中有数据页直接更新内存,数据页在磁盘里,就先写入change buffer。这两步操作记录到了redo log里。解决磁盘随机写的问题。
- change buffer:内存中有数据页直接返回,磁盘数据页读到内存,从内存中取数据。解决磁盘随机读的问题。