InnoDB维护一个称为缓冲池的存储区, 用于在内存中缓存数据和索引。了解 InnoDB缓冲池的工作方式,并利用其将经常访问的数据保留在内存中,是MySQL调优的重要方面。
配置InnoDB缓冲池预取
一个预读请求是I / O请求预取的多个页面 缓冲池 异步,在期待这些页面将很快需要。这些请求将所有页面集中到一个 范围。 InnoDB使用两种预读算法来提高I / O性能:
线性预读是一种技术,该技术根据顺序访问的缓冲池中的页面来预测很快可能需要哪些页面。您可以InnoDB使用配置参数调整触发异步读取请求所需的顺序页面访问次数,从而控制何时执行预读操作 innodb_read_ahead_threshold。在添加此参数之前,InnoDB仅在读取当前扩展区的最后一页时,才计算是否对整个下一个扩展区发出异步预取请求。
配置参数 innodb_read_ahead_threshold 控制InnoDB检测顺序页面访问模式时的敏感度。如果从扩展区顺序读取的页面数大于或等于innodb_read_ahead_threshold,则 InnoDB启动整个后续扩展区 的异步预读操作。 innodb_read_ahead_threshold可以设置为0-64之间的任何值。默认值为56。值越大,访问模式检查越严格。例如,如果将值设置为48,则InnoDB 仅当顺序访问了当前扩展区中的48页时,才触发线性预读请求。如果值为8InnoDB即使依次访问扩展区中的多达8页,也会触发异步预读。您可以在MySQL 配置文件中设置此参数的值,或使用SET GLOBAL语句动态更改此参数,该 语句需要足够的权限来设置全局系统变量。请参见 第5.1.9.1节“系统变量特权”。
随机预读是一种技术,它根据缓冲池中已有的页面来预测何时可能需要使用页面,而不管这些页面的读取顺序如何。如果在