14.8.6 配置后台 InnoDB I/O 线程数

InnoDB使用后台threads服务各种类型的 I/O 请求。您可以使用innodb_read_io_threadsinnodb_write_io_threads配置参数来配置服务于数据页上的 I/O 读写的后台线程数。这些参数分别 table 示用于读取和写入请求的后台线程数。它们在所有受支持的平台上均有效。您可以在 MySQL 选项文件(my.cnfmy.ini)中为这些参数设置值。您不能动态更改值。这些参数的默认值为4,允许值的范围为1-64

这些配置选项的目的是使InnoDB在高端系统上更具可伸缩性。每个后台线程最多可以处理 256 个未决 I/O 请求。后台 I/O 的主要来源是read-ahead个请求。 InnoDB尝试以大多数后台线程均等地共享工作的方式平衡传入请求的负载。 InnoDB还尝试将读取请求从相同范围分配到同一线程,以增加合并请求的机会。如果您有一个高端 I/O 子系统,并且在SHOW ENGINE INNODB STATUS输出中看到超过 64×innodb_read_io_threads个挂起的读取请求,则可以通过增加innodb_read_io_threads的值来提高性能。

在 Linux 系统上,InnoDB默认情况下使用异步 I/O 子系统执行对数据文件页面的预读和写请求,这改变了InnoDB后台线程为这些类型的 I/O 请求提供服务的方式。有关更多信息,请参见第 14.8.7 节“在 Linux 上使用异步 I/O”

有关InnoDB I/O 性能的更多信息,请参见第 8.5.8 节“优化 InnoDB 磁盘 I/O”