10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

15.8.3.4配置InnoDB缓冲池预取(预读取)

一个预读request是一个I/O请求缓冲池异步,因为预期这些页面的需求即将到来。请求将所有页面合并到一起程度上InnoDB使用两种预读算法来提高I/O性能:

线性预读是一种根据缓冲池中按顺序访问的页面预测可能很快需要哪些页面的技术。你控制InnoDB通过使用配置参数调整触发异步读请求所需的连续页面访问数,执行预读操作innodb_read_ahead_threshold.在添加此参数之前,InnoDB只会在读取当前区段的最后一页时计算是否为整个下一个区段发出异步预取请求。

配置参数innodb_read_ahead_threshold控制的敏感程度InnoDB在于检测顺序页面访问模式。如果从一个区段按顺序读取的页数大于或等于innodb_read_ahead_thresholdInnoDB启动整个以下区的异步预读操作。innodb_read_ahead_threshold可以设置为0-64之间的任何值。缺省值为56。该值越高,访问模式检查越严格。例如,如果您将该值设置为48,InnoDB仅当当前区段中的48个页面已被顺序访问时,才触发线性预读请求。如果值为8,InnoDB即使只有8个页面在区段中被顺序访问,也会触发异步预读。该参数可在MySQL中设置配置文件,或使用集全球语句,该语句需要足够的权限来设置全局系统变量。看到第5.1.9.1节“系统变量特权”

随机预读是一种技术,它根据缓冲池中已经存在的页面预测何时可能很快需要页面,而不考虑这些页面的读取顺序。如果在缓冲池中发现13个来自相同范围的连续页面,InnoDB异步发出预取区段剩余页的请求。要启用该特性,请设置配置变量innodb_random_read_ahead

显示引擎innodb状态命令显示统计信息,以帮助您评估预读算法的有效性。统计信息包括以下全局状态变量的计数器信息:

的微调时,此信息可能很有用innodb_random_read_ahead设置。

有关I/O性能的更多信息,请参见第8.5.8节“优化InnoDB磁盘I/O”而且第8.12.1节“优化磁盘I/O”