我在 ubuntu 18 上使用 Mysql 8 , innodb_io_capacity_max 的默认值为 2000 。如果我将其减少到 500 。如果我加载一些大文件 5GB 会有什么问题吗?考虑我的设置 2 CPU vcore,8GB RAM Azure 实例(Ubuntu 18)。. 我的考虑是它不应该失败,而是因为 innodb_io_capacity_max 值的变化而不是缓慢的加载已经被接受
1 回答
首先,让我们看一下office docinnodb_io_capacity_max
中的内容:
如果刷新活动落后,InnoDB 可以更积极地刷新,每秒 I/O 操作 (IOPS) 的速率高于
innodb_io_capacity
变量定义的速率。该innodb_io_capacity_max
变量定义了 InnoDB 后台任务在这种情况下执行的最大 IOPS 数。如果您
innodb_io_capacity
在启动时指定了一个设置但没有为 指定一个值innodb_io_capacity_max
,则 innodb_io_capacity_max 默认为 的两倍innodb_io_capacity
,最小值为 2000。
因此,innodb_io_capacity_max
是刷新活动落后时InnoDB 后台任务执行的最大 IOPS 数
当您将其减少到 500 时,这意味着刷新活动落后时的最大 IOPS 数更改为 500。
它可能会减慢您的加载操作。但是,加载大文件的性能不仅与刷新到磁盘的 IOPS 数有关。还有其他关键点:
- 硬件性能:Azure 实例磁盘的 iops 怎么样。
- 更改缓冲区大小:二级索引的好处
- 重做日志文件大小和文件数:如果重做日志文件大小或文件数太小,mysql 必须停止加载新的插入数据,直到有足够的脏页刷新到磁盘。
- innodb_max_dirty_pages_pct 值:如果这个值过低,刷新率会自动增加,
- 加载的并发线程数:太有负载会导致
page_cleaner
警告。……
对于 Question, will it be any issue if I load some big size file 5GB
,我认为会有一些关于加载性能的警告并且应该没有失败。
在尝试回答您的问题时,我发现了另外 2 个可能对您有帮助的问题。链接如下。这位先生,@Bill Karwin
在回答这两个问题时给出了非常有用的解释。