15.8.3.4 InnoDB Buffer Pool 预读功能设置

预读请求是指在预测接下来可能会需要某些页面时,异步将这些页面读取到Buffer Pool中。InnoDB使用两种预读算法来提高I/O性能:

线性 #

基于连续读取的page数量预测接下来可能会用到哪些页面。可以通过配置参数innodb_read_ahead_threshold来设置预读请求的触发阈值,当某个extent中连续 读取的page数量达到阈值时,InnoDB会预读下一个extent中的所有page。innodb_read_ahead_threshold的取值范围是0~64,默认值是56。

随机 #

基于buffer pool中已有的page数量来预测,不考虑这些page被读取的顺序。当一个extent中有13个连续页面被读取时,InnoDB会异步读取对应extent中的剩余 页面。可以通过参数innodb_random_read_ahead来控制随机预读的开关,默认值是OFF。

可以通过SHOW ENGINE INNODB STATUS命令来评估预读算法的效果。