10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

15.8.6 Linux下使用异步I/O

InnoDB使用Linux上的异步I/O子系统(本机AIO)对数据文件页执行预读和写请求。控件控制此行为innodb_use_native_aio该选项仅适用于Linux系统,默认开启。在其他类unix系统上,InnoDB只使用同步I/O。从历史上看,InnoDB只在Windows系统上使用异步I/O。在Linux上使用异步I/O子系统需要libaio图书馆。

对于同步I/O,查询线程队列I/O请求和InnoDB后台线程每次检索一个排队的请求,为每个请求发出同步I/O调用。当I/O请求完成并返回I/O调用时,将返回InnoDB处理请求的后台线程调用I/O完成例程并返回处理下一个请求。可以并行处理的请求数为n,在那里nInnoDB后台线程。的数量InnoDB控制后台线程innodb_read_io_threads而且innodb_write_io_threads.看到章节15.8.5“配置InnoDB后台I/O线程数”

使用本机AIO,查询线程将直接向操作系统发送I/O请求,从而消除后台线程数量的限制。InnoDB后台线程等待I/O事件发出完成请求的信号。当一个请求完成时,后台线程调用一个I/O完成例程并继续等待I/O事件。

本机AIO的优点是,对于I/ o绑定严重的系统(通常显示许多挂起的读/写)具有可伸缩性显示引擎innodb状态输出。使用本机AIO时并行处理的增加意味着I/O调度器的类型或磁盘阵列控制器的属性对I/O性能的影响更大。

对于I/O限制严重的系统,本机AIO的一个潜在缺点是无法控制一次性发送到操作系统的I/O写请求的数量。在某些情况下,将过多的I/O写请求发送到操作系统进行并行处理可能会导致I/O读不足,这取决于I/O活动的数量和系统能力。

如果操作系统中的异步I/O子系统出现问题InnoDB从启动开始,您可以用innodb_use_native_aio = 0.此选项也可能在启动期间自动禁用InnoDB的组合来检测潜在的问题tmpdir的位置,tmpfs文件系统和不支持异步I/O的Linux内核tmpfs