MySQL 8.3 Release Notes
InnoDB
使用背景 线程 来服务各种类型的I/O请求。您可以使用 innodb_read_io_threads
和 innodb_write_io_threads
配置参数来配置服务读取和写入I/O请求的背景线程数量。这些参数在所有支持的平台上都有效。您可以在 MySQL 选项文件 (my.cnf
或 my.ini
) 中设置这些参数的值;您不能动态更改这些值。这些参数的默认值为 4
,允许的值范围从 1-64
。
这些配置选项的目的是使 InnoDB
在高端系统上更具可扩展性。每个背景线程可以处理高达 256 个挂起的I/O请求。背景I/O的一个主要来源是 预读 请求。InnoDB
尝试平衡传入请求的负载,以便大多数背景线程共享工作。 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”。