天天看点

理解change buffer(insert buffer)

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空间;