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

【ACDU 翻译】 MySQL 15.8.3.4 配置 InnoDB 缓冲池预取(预读)

原创 由迪 2022-03-17
363

请求是一个 I/O 请求,用于异步预取 缓冲池中的多个页面 ,以预期对这些页面的迫在眉睫的需求。请求在一定程度上引入了所有页面 。 InnoDB使用两种预读算法来提高 I/O 性能:

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

配置参数 innodb_read_ahead_threshold 控制InnoDB检测顺序页面访问模式的敏感程度。如果从一个extent顺序读取的page数大于等于 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论