InnoDB 存储引擎(6)——异步IO

异步IO 简介

  • Asynchronous IO,AIO
  • 用户发出一个IO 请求后立即再发另一个IO请求,当全部IO 请求发送完毕后,等到所有IO操作的完成,就是AIO。
  • AIO 的另一个优势是可以进行IO Merge 操作,也就是可以将多个IO 合并为1 个IO,这样可以提高 IOPS的性能。例如:
    • 用户需要访问页(space, page_no) 序列为(8, 6),(8, 7),(8, 8),每页大小为16KB
    • 同步IO 需要进行3次IO 操作,而AIO 会判断到这三个页是连续的,因此AIO 底层会发送一个IO请求,从(8, 6)开始,读取48KB的页

AIO 的发展

  • InnoDB 1.1.x 之前,AIO 的实现通过InnoDB 存储引擎中的代码来模拟实现
  • InnoDB 1.1.x 之后,InnoDB 提供了内核级别的AIO 的支持,称为Native AIO。Native AIO 需要操作系统提供支持,Windows 系统和Linux 系统都提供了native AIO 支持,但是Mac OS 系统则未提供

AIO 带来的性能提升

  • 启用Native AIO 恢复速度可以提高75%

AIO在InnoDB存储引擎的使用

  • read ahead 方式的读取都是通过AIO 完成的
  • 脏页的刷新,即磁盘的写入操作也是全部由AIO 完成
上一篇:萨卡斯网红生日蛋糕


下一篇:IO模型