linux上,innodb使用异步IO子系统(native AIO)来对数据文件页进行预读和写请求。行为受到参数innodb_use_native_aio控制。

默认是开启的,且只是适用于linux平台,需要libaio库。在其他的类unix平台上,innodb使用的是同步I/O。

由于历史的原因,在windows平台上innodb只使用异步I/O。

在同步I/O情况下,查询线程将I/O请求放入队列,innodb后台线程会便利请求队列,每次处理一个请求。并行处理的请求个数受到后台线程的数量控制(参数innodb_read_io_threads)。

native AIO情况下,查询线程直接将I/O请求分发给操作系统,从而避免的后台线程数量对并发数的控制。innodb后台线程只需要等待操作系统对IO请求的处理反馈信息。

native AIO优点是可以扩展,对于I/O高的系统,通过show engine innodb status可以看到很多挂起的读写线程。磁盘控制器影响I/O性能。

native AIO的另一个优点就是可以进行I/O merge操作。

native AIO潜在的不足是,对于高I/O系统缺少对I/O写请求分发的控制。有些场景下,太多的I/O写请求分发给操作系统,可能会导致I/O读饥荒,这取决于系统可以同时处理I/O活动的能力。

mysql 异步_MySQL -- 异步I/O相关推荐

  1. mysql 同步 异步_MySQL异步复制、半同步复制详解

    MySQL数据复制的原理图大致如下: 从上图我们可以看出MySQL数据库的复制需要启动三个线程来实现: 其中1个在主服务器上,另两个在从服务器上.当发出START SLAVE时,从服务器创建一个I/O ...

  2. swoole mysql 协程_Swoole 协程 MySQL 客户端与异步回调 MySQL 客户端的对比

    Swoole 协程 MySql 客户端与 异步回调 MySql 客户端的对比 为什么要对比这两种不同模式的客户端? 异步 MySQL 回调客户端是虽然在 Swoole 1.8.6 版本就已经发布了, ...

  3. MySQL 8.0 异步复制的三种方式

    本实验中分别针对空库.脱机.联机三种方式,配置一主两从的mysql标准异步复制.只做整服务器级别的复制,不考虑对个别库表或使用过滤复制的情况. 实验环境 [root@slave2 ~]# cat /e ...

  4. 企业级运维——Mysql主从复制(异步、半同步、全同步)

    文章目录 主从复制原理 1.主节点 binary log dump 线程 2.从节点I/O线程 3.从节点SQL线程 主从复制过程 异步模式(mysql async-mode) 半同步模式(mysql ...

  5. Python使用adbapi实现MySQL数据库的异步存储

    之前一直在写有关scrapy爬虫的事情,今天我们看看使用scrapy如何把爬到的数据放在MySQL数据库中保存. 有关python操作MySQL数据库的内容,网上已经有很多内容可以参考了,但都是在同步 ...

  6. Flask + Ajax + Mysql 实现网页异步加载(一)

    滚动条滑到底部时候,在当前页面加载下一页数据: 滚动条到达顶部时候,刷新当前页面. 一.flask 实现的服务器端 @app.route('/',methods=['GET','POST']) def ...

  7. 动力节点老杜mysql文件_mysql主从复制+mysql主从复制延迟解决方案

    ### 1. 为什么需要mysql主从复制 1. 数据热备 在复杂的业务场景中, 可能因为某一条sql造成了锁表, 这样就会影响正常的业务运行.在复杂的业务场景中, 我们可以使用mysql主从复制, ...

  8. redis mysql原理_MYSQL MONGODB REDIS 同步原理以及高可用性对比

    MySQL 1.异步复制: 2.半同步复制:同步出现超时后会自动变回异步复制: MongoDB MongoDB的副本集是一组mongod进程的集合,提供冗余和高可用性.最小的的副本集包含(1个prim ...

  9. python 异步io_python异步IO编程(一)

    python异步IO编程(一) 基础概念 异步IO (async IO):一种由多种语言实现的与语言无关的范例(或模型). asyncio:Python 3.4版本引入的标准库,直接内置了对异步IO的 ...

最新文章

  1. 高精地图与自动驾驶(下)
  2. php m 报错,PHP框架ThinkPHP入参m报错
  3. Socket支持多用户并发访问的解决办法
  4. 【MFC】在工具栏中添加编辑框
  5. Magento 2开发教程 - 创建新模块
  6. AI自动评审了下Transformer论文
  7. Ubuntu Linux下使用锐捷认证的方法
  8. python request属性及方法说明
  9. 零基础学python难吗-零基础入门学习Python技术难不难?
  10. html基础入门----简单动画
  11. ROS操作系统入门学习
  12. 台式计算机c盘怎么清理空间,练习教你电脑如何清理系统c盘空间
  13. OSChina 周二乱弹 —— 程序员如何转行卖烧烤
  14. required默认提示的修改
  15. Win11系统Windows.old能删除吗?Windows.old怎么删?
  16. FileNotFoundError: [Errno 2] No such file or directory: ‘./train/hazy/hazy‘
  17. Ubuntu 16.04下EasyOpenJTAG+OpenOCD的安装和使用【转】
  18. 如何在Excel中对工作表进行分组
  19. docx4j 对比word
  20. 【Aladdin Unity3D Shader编程】之四 贴图纹理

热门文章

  1. 系统mysql数据库服务器,系统mysql数据库服务器
  2. java gb13000 ucs2_采用GB 13000的UCS-2进行存储的文件怎么转换
  3. openwrt 格式化_OPENWRT扩展系统到U盘
  4. 7-3 堆中的路径 (25 分)
  5. python中面向对象_简述Python中的面向对象编程的概念
  6. mysql配置文件结构_MariaDB/MySQL配置文件my.cnf解读
  7. node 存储过程_用Node.js操作跨平台数据库Firebird
  8. mysql查询错误_一个奇怪的MySQL查询错误
  9. java访问mongodb_Java中获取MongoDB连接的方法详解
  10. 正在读取软件包列表... 有错误!