文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL45讲之InnoDB刷脏策略 - flowers

2018-05-10 05:02

关注

MySQL45讲之InnoDB刷脏策略 - flowers

本文介绍 InnoDB 的刷脏控制策略,它是如何控制刷脏速率的,以及一些相关参数。

前言

本文介绍 InnoDB 的刷脏控制策略,它是如何控制刷脏速率的,以及一些相关参数。

意义

了解 MySQL 的刷脏策略有什么意义?

当一条正确的 SQL 执行时偶尔延迟较高,无法复现场景时,可能就是 MySQL 刷脏导致的。通过了解 MySQL 的刷脏策略,可以帮助我们更好地使用 MySQL 及调优。

刷脏控制策略

innodb_io_capacity

innodb_io_capacity 变量告诉 MySQL 主机磁盘的 IO 性能,这样 InnoDB 就知道全力刷脏的时候,可以刷多快。

innodb_io_capacity_max 表示刷脏速度的最大值,默认是 200。

控制策略

InnoDB 知道了它刷脏的上限后,还需要确定它刷脏速度的控制策略,因为它不可能将所有 IO 都用于刷脏,还需要处理用户的查询请求。

控制策略关注两点,一是内存中脏页的占比,一是 redo log 的写入速率。

innodb_max_dirty_pages_pct 是脏页的占比上限,默认是 75%。InnoDB 会根据脏页的比例(假设为 M),计算出一个 0 ~ 100 的值,假设为 p1,计算逻辑如下:

F1(M)
{
  if M>=innodb_max_dirty_pages_pct then
      return 100;
  return 100*M/innodb_max_dirty_pages_pct;
}

InnoDB 每次写 redo log 日志都会记录一个序号,当每新写入一条记录时,会计算当前这条日志的序号减去 checkpoint 记录序号的差值,InnoDB 再将这个差值应用于计算算法得到一个 0 ~ 100 的值,假设为 p2。该计算算法比较复杂,可以确定地逻辑是,当差值越大得到地结果越大。

取 p1 和 p2 之间的较大值 R,之后引擎的刷脏速率就是 R% * innodb_io_capacity。

邻居顺带刷脏策略

执行 SQL 时,刷脏会让语句执行变慢,而邻居顺带刷脏策略会让执行变得更慢。

当进行一次刷脏时,如果脏页的旁边的数据页也是脏页,那就会准备把这个邻居脏页也进行刷脏,并且将邻居刷脏的逻辑还可以蔓延,使得将相邻的脏页都刷脏。

该策略对于早期机械硬盘 IOPS 低是很有帮助的,可以减少很多随机 IO。但在当前 IOPS 较高的 SSD 磁盘下,这个策略显得鸡肋且有副作用。

所以,建议将该策略禁用,即设置 innodb_flush_neighbors = 0,MySQL8 默认是禁用该策略的。

参考

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯