change buffer的作用:
作用于不在缓存池中的非唯一索引页
对该页进行写操作后并不会立刻将该页从磁盘中加载到缓存池,而是在change buffer中记录页的修改,等该页被读取时,再将修改的数据merger到缓存池中;
以此来缓解写操作多次随机读的io消耗;
当索引中包含降序索引或者主键中包含降序索引时不会用到change buffer;
当change buffer大小超过最大阈值后不会再使用change buffer;
merge策略:
被动merge:当用户线程主动发起change buffer中索引页的读取操作时,会被动的将页的修改记录merge到原始索引页中;
主要merge:master thread定期将change buffer中的记录随机刷回索引页,如果每秒master thread有空闲i/o能力,则刷5个缓存索引页,每10秒不管i/o压力都会刷5个缓存的索引页记录;
相关参数:
相关监控信息:
change buffer局限:
需要作用于非唯一索引,因为非唯一索引不要校验数据重复;
change buffer会占用一定的innodb buffer空间;