为低 IOPS Azure 实例更改 MYSQL8 中的 innodb_io_capacity_max 参数

Changing innodb_io_capacity_max parameter in MYSQL8 for low IOPS Azure instance

我在 ubuntu 18 上使用 Mysql 8 , innodb_io_capacity_max 的默认值是 2000 。如果我将它减少到 500 。如果我加载一些 5GB 的大文件会有什么问题吗?考虑我的设置 2 CPU vcore,8GB RAM Azure 实例 (Ubuntu 18)。 .我的考虑是它不应该失败而不是由于 innodb_io_capacity_max 值更改而不是缓慢加载已被接受

首先,让我们看看office doc中的innodb_io_capacity_max是什么:

If flushing activity falls behind, InnoDB can flush more aggressively, at a higher rate of I/O operations per second (IOPS) than defined by the innodb_io_capacity variable. The innodb_io_capacity_max variable defines a maximum number of IOPS performed by InnoDB background tasks in such situations.

If you specify an innodb_io_capacity setting at startup but do not specify a value for innodb_io_capacity_max, innodb_io_capacity_max defaults to twice the value of innodb_io_capacity, with a minimum value of 2000.

因此,innodb_io_capacity_max 是 InnoDB 后台任务 执行的 最大 IOPS 数 当刷新 activity 落后时

当你减少到500时,意味着刷新时最大IOPS数activity落后改为500

可能 减慢您的加载操作。然而,加载大文件的性能不仅与刷新到磁盘的IOPS数量有关。还有其他要点:

  1. 硬件性能:您的 Azure 实例磁盘的 iops 怎么样。
  2. 更改缓冲区大小:有利于二级索引
  3. 重做日志文件大小和文件数:如果重做日志文件大小或文件数太小,mysql必须停止加载新的插入数据,直到有足够的脏页刷新到磁盘。
  4. innodb_max_dirty_pages_pct值:如果这个值太低,冲洗率会自动增加,
  5. 加载并发线程数:加载太多会导致page_cleaner警告。 ....

对于问题will it be any issue if I load some big size file 5GB,我认为会有一些关于加载性能的警告,应该不会失败。

在尝试回答您的问题时,我发现了另外 2 个可能对您有所帮助的问题。链接如下。这位先生,@Bill Karwin在两个问题的答案中都给出了非常有帮助的解释。