美文网首页
[MySQL]浅谈InnoDB存储引擎(七)异步IO

[MySQL]浅谈InnoDB存储引擎(七)异步IO

作者: AbstractCulture | 来源:发表于2020-11-02 01:14 被阅读0次

回顾

上一个章节我们说到了自适应哈希索引AHI,这是MySQL用哈希来加快热点数据查找的一个特性。那么这个章节我们继续来看MySQL的另一个关键特性-异步IO.

从IO说起

由于内存与磁盘之间的IO性能存在很大的差异。InnoDB在访问磁盘的时候,采用的是AIO的方式,也就是异步IO。
与AIO对应的是Sync IO,即同步IO,它是阻塞式的-也就是必须等待这个IO操作结束后才能继续往下操作。如果此时用户发来一个需要扫描多个索引页的查询请求,这个请求所对应的就是多次IO操作,如果采用同步IO的模型进行页的访问,那是效率极低的。
AIO的方式是发送完一个IO请求后,立即发送下一个IO请求,当所有的IO请求发送完毕,再等待所有IO操作的完成。它为密集型IO的系统带来了可伸缩性。

IO合并

AIO可以将多个IO进行合并,这里假设用户需要访问的page_no为1、2、3,那么AIO会判断这三个是否为连续的页,如果是,那么对当前IO请求进行合并,发出从(space,1)开始,读取48KB的页(一页为16KB)


image.png

在Linux上通过iostat来查看IO合并的情况

想了解iostat可以从以下链接进行进一步的了解: iostat

shell> iostat

这里体现AIO的参数如下:
rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
wrqm/s: 每秒对该设备的写请求被合并次数

InnoDB版本不同所带来的AIO版本差异

在InnoDB1.1.x之前,AIO是通过InnoDB存储引擎中的代码来模拟实现的,而从InnoDB1.1.x开始,提供了内核级别的AIO支持(也就是说AIO这个机制交由操作系统内核来实现了),称为Native AIO,因此在编译或者允许该版本MySQL的时候,需要libaio库的支持。
以下是官方文档的地址:AIO

如何启用AIO

可以通过参数innodb_use_native_aio来控制是否启用AIO,在Linux操作系统下,这个参数默认为ON(即默认开启).注意,在数据库运行期间修改这个值并不会生效。

shell> SHOW VARIABLES LIKE 'innodb_use_native_aio'\G;

性能上带来的提升

使用AIO可以加快磁盘的IO操作,其中官方测试报告显示,启用AIO,恢复速度可以提高75%。
InnoDB存储引擎中,read ahead方式的读取都是AIO完成,脏页的刷新也是由AIO来完成的。

下面贴一个学习AIO的帖子,想深入的朋友可以点击链接进行跳转->AIO那些事

相关文章

  • [MySQL]浅谈InnoDB存储引擎(七)异步IO

    回顾 上一个章节我们说到了自适应哈希索引AHI,这是MySQL用哈希来加快热点数据查找的一个特性。那么这个章节我们...

  • 推荐书单

    MySQL 内核 INNODB存储引擎第1版 MySQL技术内幕 InnoDB存储引擎 第2版 RabbitM...

  • MySQL-存储引擎

    零、本文纲要 一、MySQL存储引擎 二、InnoDB存储引擎1、InnoDB逻辑存储结构2、InnoDB架构3、...

  • mysql(七)

    MySQL存储引擎-innodb 查看存储引擎 innodb和myisam的物理区别 innodb 核心特性 MV...

  • MySQL-InnoDB体系架构

    作者:刘仁鹏参考资料:《MySQL技术内幕 InnoDB存储引擎》 1.InnoDB体系架构 InnoDB存储引擎...

  • MySQL存储引擎

    MySQL:单进程多线程数据库 一、InnoDB存储引擎InnoDB存储引擎支持事务(5.5.8MySQL默认版本...

  • 浅谈InnoDB存储引擎中的锁

    InnoDB存储引擎是MySQL数据库默认的事务型存储引擎,也是使用比较多的存储引擎。InnoDB存储引擎不紧支持...

  • mysql规范

    一、基础规范【强制】使用InnoDB存储引擎解读:InnoDB存储引擎是MySQL默认存储引擎,支持事务和行级锁,...

  • Innodb关键特性

    Innodb特性包括:插入缓冲两次写自适应哈希索引异步IO刷新相邻页 插入缓冲 使用 Innodb 存储引擎的表数...

  • 1. Mysql技术内幕-简介及InnoDB体系架构

    Mysql体系结构和存储引擎 Mysql体系结构 InnoDB存储引擎 InnoDB通过使用MVCC来获取高并发性...

网友评论

      本文标题:[MySQL]浅谈InnoDB存储引擎(七)异步IO

      本文链接:https://www.haomeiwen.com/subject/csdpvktx.html