### 15.8.5 配置后台 InnoDB I/O 线程数

[](<>)[](<>)[](<>)[](<>)

`InnoDB`使用背景[线程](glossary.html#glos_thread)服务于各种类型的 I/O 请求。您可以使用[`innodb_read_io_threads`](innodb-parameters.html#sysvar_innodb_read_io_threads)和[`innodb_write_io_threads`](innodb-parameters.html#sysvar_innodb_write_io_threads)配置参数。这些参数分别表示用于读取和写入请求的后台线程数。它们在所有支持的平台上都有效。您可以在 MySQL 选项文件 (`我的.cnf`要么`我的.ini`);您不能动态更改值。这些参数的默认值为`4`和允许的值范围从`1-64`.

这些配置选项的目的是使`InnoDB`在高端系统上更具可扩展性。每个后台线程最多可以处理 256 个挂起的 I/O 请求。后台 I/O 的主要来源是[预读](glossary.html#glos_read_ahead)要求。`InnoDB`尝试以大多数后台线程平等共享工作的方式平衡传入请求的负载。`InnoDB`还尝试将来自相同范围的读取请求分配给同一线程，以增加合并请求的机会。如果您有一个高端 I/O 子系统并且您看到超过 64 ×[`innodb_read_io_threads`](innodb-parameters.html#sysvar_innodb_read_io_threads)待处理的读取请求`显示引擎 INNODB 状态`输出，您可以通过增加[`innodb_read_io_threads`](innodb-parameters.html#sysvar_innodb_read_io_threads).

在 Linux 系统上，`InnoDB`默认使用异步 I/O 子系统来执行数据文件页面的预读和写请求，这改变了`InnoDB`后台线程为这些类型的 I/O 请求提供服务。有关详细信息，请参阅[第 15.8.6 节，“在 Linux 上使用异步 I/O”](innodb-linux-native-aio.html).

有关更多信息`InnoDB`I/O 性能，请参阅[第 8.5.8 节，“优化 InnoDB 磁盘 I/O”](optimizing-innodb-diskio.html).
