暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[ACDU翻译] MySQL 15.8.3.4 配置 InnoDB 缓冲池预取(Read-Ahead)

原创 由迪 2021-06-16
1052

一个预读请求是I / O请求预取的多个页面 缓冲池 异步,在即将到来的需要对这些页面的预期。请求在一个范围内引入所有页面 。 InnoDB使用两种预读算法来提高 I/O 性能:

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

配置参数 innodb_read_ahead_threshold 控制InnoDB检测顺序页面访问模式的敏感程度。如果从一个extent 中顺序读取的页数大于或等于 innodb_read_ahead_threshold,则 InnoDB启动整个后续extent 的异步预读操作。 innodb_read_ahead_threshold可以设置为 0-64 之间的任何值。默认值为 56。值越大,访问模式检查越严格。例如,如果将该值设置为 48,则InnoDB 仅在当前范围内的 48 个页面已被顺序访问时触发线性预读请求。如果值为 8,InnoDB即使顺序访问区中的少至 8 页,也会触发异步预读。你可以在MySQL配置文件中设置这个参数的值,也可以用SET GLOBAL语句动态改变它 ,这需要足够的权限来设置全局系统变量。请参阅 第 5.1.9.1 节,“系统变量权限”

随机预读是一种技术,它根据缓冲池中已有的页面来预测何时可能很快需要页面,而不管这些页面的读取顺序如何。如果在缓冲池中找到来自相同范围的 13 个连续页面,则 InnoDB异步发出请求以预取该范围的剩余页面。要启用此功能,请将配置变量设置 innodb_random_read_aheadON

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

此信息在微调innodb_random_read_ahead 设置时非常有用 。

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论