zoukankan      html  css  js  c++  java
  • innodb之关键特性异步IO

    1.前言

      为了提高磁盘操作性能,当前的数据库系统都采用异步IO(Asynchronous IO,AIO)的方式来处理磁盘操作

    2.AIO

      异步IO相较于同步IO而言的是,当它每扫描一个页之后不需要等待其完成就可以再进行扫描下一次的扫描,另外一个优势是可以进行IO merge操作,也就是可以将多个IO合并成一个IO,这样就可以提高IOPS的性能,例如用户需要访问页的(space,page_no)为:(8,6)、(8,7)、(8,8) 每个页的大小为16K,那么同步IO需要进行3次IO操作。而AIO会判断到这三个页是连续的(显然可以通过(space ,page_no)得知)。因此AIO底层会发送一个IO请求,从(8,6)开始,读取48kb的页

      在innodb1.1x之前,AIO的实现通过innodb存储引擎中的代码来模拟实现。而从innodb1.1.x开始(innodb plugin不支持),提供了内核级别的AIO的支持,称为Native AIO,因此在编译或者运行该版Mysql时,需要libaio库的支持。需要注意的是,Native AiO需要操作系统提供支持。Windows系统和Linux系统都Native AIO支持,而MAC os上面未提供。 

    root@localhost 14:53:  [liulin]> show variables like '%innodb_use%';
    +-----------------------+-------+
    | Variable_name         | Value |
    +-----------------------+-------+
    | innodb_use_native_aio | ON    |
    +-----------------------+-------+
    1 row in set (0.00 sec)

      通过查看该参数是默认开始状态,用户可以通过开启和关闭Native AIO功能来比较Innodb性能的提升。官方显示,启用Native AIO,恢复速度可以提高75%

      在innodb存储引擎中,read ahead方式的读取都是通过AIO完成,脏页的刷新,即磁盘的写入操作则全部是由AIO完成。

  • 相关阅读:
    SpringBoot-13-简单整合Dubbo
    SpringBoot-12-整合Redis
    SpringBoot-11-任务
    SpringBoot-10-Swagger
    SpringBoot-09-Apche Shiro
    SpringBoot-08-Spring Security
    五十七-代码审计-JAVA项目框架类漏洞分析报告
    五十六:代码审计-JAVA项目Filter过滤器及XSS挖掘
    五十五:代码审计-JAVA项目注入上传搜索或插件挖掘
    五十四:代码审计-TP5框架审计写法分析及代码追踪
  • 原文地址:https://www.cnblogs.com/zmc60/p/15223136.html
Copyright © 2011-2022 走看看