linux mysql 开启异步io_mysql8 参考手册--在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,其中n为InnoDB后台线程数。InnoDB后台线程的数量由InnoDB_readio线程和InnoDB_writeio线程控制。

使用本机AIO,查询线程将I / O请求直接分派到操作系统,从而消除了后台线程数量所带来的限制。InnoDB后台线程等待I / O事件以信号通知已完成的请求。请求完成后,后台线程将调用I / O完成例程,并继续等待I / O事件。

本地AIO的优点是对I / O密集型系统的可伸缩性,这些系统通常在SHOW ENGINE INNODB STATUS\G输出中显示许多挂起的读/写操作 。使用本机AIO时并行处理的增加意味着I / O调度程序的类型或磁盘阵列控制器的属性对I / O性能的影响更大。

对于A / O密集型系统而言,本机AIO的潜在缺点是无法立即控制分配给操作系统的I / O写请求的数量。在某些情况下,根据I / O活动和系统功能的数量,调度到操作系统进行并行处理的I / O写入请求太多,可能会导致I / O读取不足。

如果操作系统中的异步I / O子系统出现问题而无法InnoDB启动,则可以使用启动服务器 innodb_use_native_aio=0。如果InnoDB检测到潜在问题(例如,tmpdir位置, tmpfs文件系统和不支持on上的异步I / O的Linux内核的组合),则在启动期间也可以自动禁用此选项 tmpfs。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值