唯一索引与普通索引
一、查询过程
- 普通索引的查询过程是查找到满足条件的第一个记录后,需要查找下一个记录,直到不满足为止。
- 唯一索引的查询过程是找到第一个满足条件的记录后,就会停止检索。
二、更新过程
change buffer
当更新数据页的时候,如果数据页在内存中,就直接更新,如果不在内存中,在不影响数据一致性的条件下,InnoDB会将更新操作缓存在change buffer中,在下次查询需要访问这个数据页的时候,将数据页读入内存。change buffer也会被写入到磁盘中,将change buffer中的操作作用到数据页上的过程叫做merge,除了访问这个数据页会触发mere以外,系统后台线程也会定期进行merge,在数据库正常关闭(shutdown)的过程中,也会执行merge操作。change buffer 用的是buffer pool里面的内存,可以通过参数innodb_change_buffer_max_size
来动态设置。唯一索引的更细不能使用change buffer,因为其要进行唯一性判断,必须将数据页读入到内存,既然读入到了内存,就直接内存更新了。redo log主要节省的是随机写磁盘的IO消耗,而change buffer主要节省的是随机读磁盘的IO消耗。