Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Configuring InnoDB Buffer Pool Prefetching (Read-Ahead)

17.8.3.4 InnoDB 缓冲池 Prefetching 配置(预读)

一个预读请求是异步将多个页面 prefetch 到缓冲池中,以便在即将需要这些页面时提前准备。这些请求一次性将整个extent中的所有页面带入。InnoDB使用两个预读算法来改进I/O性能:

线性预读是一种技术,它根据缓冲池中被访问的页面顺序来预测将要需要哪些页面。您可以通过调整innodb_读_前_ ahead_threshold配置参数来控制InnoDB何时执行预读操作。在该参数添加之前,InnoDB将只在读取当前extent的最后一页时计算是否需要异步prefetch下一个extent中的所有页面。

配置参数innodb_读前提阈值控制InnoDB在检测顺序页面访问模式的敏感度。如果从一个extent中连续读取的页面数大于或等于innodb_读前提阈值InnoDB将异步启动整个后续extent的读取操作。innodb_读前提阈值可以设置为0-64之间的任何值。默认值是56。值越高,访问模式检查越严格。例如,如果将值设置为48,InnoDB将在当前extent中连续访问48个页面时触发线性读取请求。如果值为8,InnoDB将在extent中的任何8个页面被顺序访问时触发异步读取操作。您可以在MySQL配置文件中设置该参数的值,也可以动态地使用SET GLOBAL语句更改该值,该语句需要具有足够的权限以设置全局系统变量。请参阅第7.1.9.1节,“系统变量权限”

随机预读是根据缓冲池中已经读取的页面来预测可能需要 soon 的页面顺序,不管这些页面在什么顺序被读取。如果发现 13 个连续页面来自同一个扩展,InnoDB异步地发出请求,以 prefetch 扩展中的剩余页面。要启用该特性,请将配置变量innodb_random_read_ahead设置为ON

语句SHOW ENGINE INNODB STATUS显示了读取算法的统计信息,以帮助您评估该算法的有效性。统计信息包括以下全局状态变量的计数器信息:

这些信息可以在 fine-tuninginnodb_random_read_ahead设置时非常有用。

关于 I/O性能的更多信息,请见第 10.5.8 节,“Optimizing InnoDB Disk I/O”第 10.12.1 节,“Optimizing Disk I/O”