MySQL 8.4 Release Notes
17.8.5 后台 InnoDB I/O 线程数配置
InnoDB
使用背景线程来服务各种类型的I/O请求。您可以使用innodb_read_io_threads
和innodb_write_io_threads
配置参数来配置读取和写入数据页的背景线程数。这两个参数表示用于读取和写入请求的背景线程数,适用于所有支持平台。您可以在MySQL选项文件(my.cnf
或my.ini
)中设置这些参数的值;不能动态更改值。innodb_read_io_threads
的默认值是系统可用逻辑处理器数除以2,minimum default value为4
。innodb_write_io_threads
的默认值为4。允许的值范围从1-64
对应于这两个选项。
这些配置选项旨在使InnoDB
在高端系统上更加可扩展。每个背景线程可以处理最多256个待处理I/O请求。背景I/O的主要来源是读前置请求。InnoDB
尝试平衡incoming请求的负载,以便大多数背景线程均匀地共享工作。InnoDB
还尝试将来自同一个extent的读请求分配给同一个线程,以增加请求合并的机会。如果您拥有高端I/O子系统,并在SHOW ENGINE INNODB STATUS
输出中看到超过64 × innodb_read_io_threads
个待处理读请求,您可能通过增加innodb_read_io_threads
的值来提高性能。
在Linux系统上,InnoDB
默认使用异步I/O子系统来执行数据文件页的读前置和写请求,这将改变InnoDB
背景线程服务这些类型I/O请求的方式。有关更多信息,请见第17.8.6节,“使用Linux上的异步I/O”。
有关InnoDB
I/O性能的更多信息,请见第10.5.8节,“优化InnoDB磁盘I/O”。