我想为我的innodb_io_capacity服务器配置MariaDB选项。在这些文档中,我发现了以下内容:
更快的硬盘驱动器、RAID配置和固态驱动器(SSD)受益于更高的值。
有人有配置这个值的经验吗?这个值是以什么单位测量的?是IOPS吗?
例如,我的设置是:
innodb_io_capacity的当前值是2000,innodb_io_capacity_max设置为3000。
我是否正确地认为我可以将innodb_io_capacity设置为500.000,因为硬盘具有如此高的IOPS值(减去X,因为某些操作系统进程)?
innodb_read_io_threads设置如何影响innodb_io_capacity参数?我的当前值是16个线程(拥有IntelXeonE5-1660v4 8x3.2GHz)
发布于 2020-02-05 09:48:06
基本的Google提供了以下信息:
innodb_io_capacity变量定义了InnoDB后台任务可用的每秒I/O操作数,例如从缓冲池中刷新页面和从更改缓冲区合并数据。
我不会将其设置为SSD磁盘的最大IOPS值,因为您需要IOPS处理InnoDB前台任务。在该参数的文档下面可以找到的链接中也对此进行了注释。
有关配置innodb_io_capacity变量的信息,请参阅14.8.8,“配置InnoDB I/O容量”节。
这导致:
InnoDB主线程和其他线程在后台执行各种任务,其中大多数任务与I/O相关,例如从缓冲池中刷新脏页,并将更改从变更缓冲区写入适当的辅助索引。InnoDB试图以不影响服务器正常工作的方式执行这些任务。它试图估计可用的I/O带宽,并调整其活动以利用可用容量。
innodb_io_capacity变量定义了InnoDB可用的总体I/O容量。它应该设置为系统每秒可以执行的I/O操作数(IOPS)。设置innodb_io_capacity时,InnoDB根据设置的值估计后台任务可用的I/O带宽。您可以将innodb_io_capacity设置为100或更高的值。默认值是200。通常,100左右的值适用于消费者级的存储设备,例如高达7200 RPM的硬盘驱动器。更快的硬盘驱动器、RAID配置和固态驱动器(SSD)受益于更高的值。理想的情况是,尽可能低的设置实际,但不要太低,背景活动落后。如果值太高,数据将从缓冲池中移除,并且对缓存来说更改缓冲区的速度太快,从而带来显著的好处。对于能够高I/O速率的繁忙系统,可以设置更高的值,以帮助服务器处理与高行更改率相关的后台维护工作。通常,您可以将值作为用于InnoDB I/O的驱动器数量的函数增加。例如,您可以在使用多个磁盘或SSD的系统上增加值。
继续到innodb_read_io_threads参数..。
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还尝试将读取请求从相同的范围分配到同一个线程,以增加合并请求的机会。如果您有一个高端I/O子系统,并且在显示引擎INNODB状态输出中看到超过64×innodb_read_io_threads挂起的读取请求,则可以通过增加innodb_read_io_threads值来提高性能。
我把这理解为参数之间没有真正的联系。可以根据系统的性能单独地配置每个参数。
https://dba.stackexchange.com/questions/258931
复制相似问题