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

【ACDU 翻译】MySQL 15.11.1 InnoDB 磁盘 I/O

原创 由迪 2022-05-26
369

15.11.1 InnoDB 磁盘 I/O

InnoDB尽可能使用异步磁盘 I/O,通过创建多个线程来处理 I/O 操作,同时允许其他数据库操作在 I/O 仍在进行中时继续进行。在 Linux 和 Windows 平台上,InnoDB使用可用的操作系统和库函数来执行“本机”异步 I/O。在其他平台上,InnoDB仍然使用 I/O 线程,但线程实际上可能等待 I/O 请求完成;这种技术被称为“模拟” 异步 I/O。

预读

如果InnoDB可以确定很有可能很快需要数据,它会执行预读操作以将该数据带入缓冲池,以便它在内存中可用。对连续数据发出几个大的读取请求可能比发出几个小的分散请求更有效。中有两种预读启发式InnoDB

  • 在顺序预读中,如果InnoDB 注意到对表空间中某个段的访问模式是顺序的,它会将一批数据库页面的读取提前发布到 I/O 系统。
  • 在随机预读中,如果InnoDB注意到表空间中的某些区域似乎正处于被完全读入缓冲池的过程中,它会将剩余的读取发送到 I/O 系统。

有关配置预读启发式的信息,请参阅 第 15.8.3.4 节,“配置 InnoDB 缓冲池预取(预读)”

双写缓冲区

InnoDB使用一种新颖的文件刷新技术,该技术涉及一种称为 双写缓冲区的结构,在大多数情况下默认启用该结构 ( innodb_doublewrite=ON)。它增加了意外退出或断电后恢复的安全性,并通过减少对fsync()操作的需求来提高大多数 Unix 的性能。

在将页面写入数据文件之前,InnoDB 首先将它们写入称为双写缓冲区的存储区域。只有在对双写缓冲区的写入和刷新完成后,才会InnoDB将页面写入数据文件中的适当位置。如果在页面写入过程中出现操作系统、存储子系统或意外 的mysqld进程退出(导致页面撕裂的 情况),InnoDB则可以稍后在恢复期间从双写缓冲区中找到该页面的良好副本。

有关双写缓冲区的更多信息,请参阅 第 15.6.4 节,“双写缓冲区”

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

评论