• 首页
  • css3教程
  • html5教程
  • jQuery手册
  • vue手册
  • php手册
  • MySQL手册
  • apache手册
  • redis手册
  • 配置InnoDB I / O容量

    InnoDB主线程和其他线程在后台执行各种任务,其中大部分是I / O相关的,如从缓冲池刷新脏页,写从改变缓冲更改相应的二级指标。InnoDB尝试以不会对服务器的正常工作产生不利影响的方式执行这些任务。它尝试估计可用的I / O带宽并调整其活动以利用可用容量。

    innodb_io_capacity变量定义提供给整体的I / O容量InnoDB。应该将其设置为大约系统每秒可以执行的I / O操作数(IOPS)。当innodb_io_capacity设置,InnoDB估计I / O带宽可以根据设定值后台任务。

    您可以设置innodb_io_capacity为100或更大的值。默认值为200。通常,大约100的值适用于消费级存储设备,例如最高7200 RPM的硬盘驱动器。更快的硬盘驱动器,RAID配置和固态驱动器(SSD)受益于更高的价值。

    理想情况下,将设置保持在尽可能低的水平,但又不要过低,以免后台活动落后。如果该值太大,则会从缓冲池中删除数据,并且过快地更改缓冲区以进行缓存会带来很大的好处。对于具有较高I / O速率的繁忙系统,可以设置较高的值,以帮助服务器处理与高行更改率相关的后台维护工作。通常,您可以根据用于InnoDBI / O 的驱动器数量来增加该值。例如,您可以在使用多个磁盘或SSD的系统上增加该值。

    对于低端SSD,默认设置200通常就足够了。对于高端的,总线连接的SSD,请考虑更高的设置,例如1000。对于具有单个5400 RPM或7200 RPM驱动器的系统,您可以将该值降低为100,这表示可以执行约100 IOPS的较老磁盘驱动器每秒可用的I / O操作(IOPS)的估计比例。

    尽管您可以指定一个较高的值,例如一百万,但实际上,这样的大值几乎没有好处。通常,建议不要使用大于20000的值,除非您确定较低的值不足以满足您的工作量。

    调整时请考虑写入工作量innodb_io_capacity。写入工作量较大的系统可能会受益于更高的设置。对于写入工作量较小的系统,较低的设置可能就足够了。

    innodb_io_capacity设置不是每个缓冲池实例设置。可用I / O容量在缓冲池实例之间平均分配以进行刷新活动。

    您可以innodb_io_capacity在MySQL选项文件(my.cnfmy.ini)中设置值,或在运行时使用一条SET GLOBAL语句对其进行修改,该语句要求具有足以设置全局系统变量的特权。请参见“系统变量特权”。

    忽略检查点的I / O容量

    innodb_flush_sync默认情况下启用的变量使innodb_io_capacity设置在检查点发生I / O活动突发时被忽略。要遵守innodb_io_capacity设置定义的I / O速率,请禁用innodb_flush_sync

    您可以innodb_flush_sync在MySQL选项文件(my.cnfmy.ini)中设置值,或在运行时使用一条SET GLOBAL语句对其进行修改,该语句要求具有足以设置全局系统变量的特权。请参见“系统变量特权”。

    配置最大I / O容量

    如果刷新活动落后,则InnoDB可以以比innodb_io_capacity变量定义更高的每秒I / O操作速率(IOPS)更积极地进行刷新。该innodb_io_capacity_max变量定义InnoDB在这种情况下由后台任务执行的最大IOPS数。

    如果innodb_io_capacity在启动时指定设置,但未指定的值innodb_io_capacity_max,则innodb_io_capacity_max默认值为的值的两倍innodb_io_capacity,最小值为2000。

    配置时innodb_io_capacity_maxinnodb_io_capacity通常将两倍作为一个好的起点。默认值2000适用于使用SSD或多个常规磁盘驱动器的工作负载。对于不使用SSD或多个磁盘驱动器的工作负载,设置为2000可能太高,并且可能允许过多的刷新。对于单个常规磁盘驱动器,建议设置在200到400之间。对于高端的,总线连接的SSD,请考虑较高的设置,例如2500。与该innodb_io_capacity设置一样,保持设置尽可能低,但又不要太低,以至于InnoDB无法将IOPS速率充分扩展到该innodb_io_capacity设置之外。

    调整时请考虑写入工作量innodb_io_capacity_max。具有较大写工作负载的系统可能会受益于更高的设置。对于写入工作量较小的系统,较低的设置可能就足够了。

    innodb_io_capacity_max不能将其设置为小于该innodb_io_capacity值的值。

    设置innodb_io_capacity_maxDEFAULT使用SET语句(SET GLOBAL innodb_io_capacity_max=DEFAULT)设置innodb_io_capacity_max为最大值。

    innodb_io_capacity_max限制适用于所有缓冲池实例。它不是每个缓冲池实例设置。