【mysql】Innodb三大特性之insert buffer
一、什么是insert buffer insert buffer是一种特殊的数据结构(B+ tree) 并不是缓存的一部分,而是物理页 , 当受影响的索引页不在buffer pool时 缓存 secondary index pages的变化, 当buffer page读入buffer pool时 ,进行合并操作,这些操作可以是 INSERT , UPDATE , or DELETE operations (DML) 最开始的时候只能是insert操作,所以叫做insert buffer,现在已经改叫做change buffer了 insert buffer 只适用于 non-unique secondary indexes 也就是说 只能用在非唯一的索引上 ,原因如下 1、primary key 是 按照递增的顺序进行插入的,异常插入聚族索引一般也顺序的,非随机IO 2 写唯一索引要检查记录是不是存在,所以在修改唯一索引之前,必须把修改的记录相关的索引页读出来才知道是不是唯一、这样Insert buffer就没意义了,要读出来(随机IO) 所以只对非唯一索引有效 二、insert buffer的原理 对于为非唯一索引,辅助索引的修改操作并非实时更新索引的叶子页,而是把若干对同一页面的更新缓存起来做,合并为一次性更新操 作, 减少IO,转随机IO为顺序IO