MySQL 导入速度变慢,jbd2 磁盘 I/O 较高

MySQL 导入速度变慢,jbd2 磁盘 I/O 较高

我正在将一个大型 .sql 文件导入我的服务器 MySQL 数据库,

但是到目前为止,导入仅导入了几个表,目前记录了约 1700 万个表。但是导入每导入几千条记录就会暂停一次,并且导入到表中的记录越多,暂停时间就越长。基本上很快就会停滞不前。

我想这可能与某些记忆限制有关?

然而运行 iotop 显示 jbd2 进程在任何时候都在使用大量磁盘 I/O。

显示 jbd2 使用率高

这可能是原因吗?如果是的话,是否有任何方法可以禁用日志记录,直到导入完成?

答案1

它不只是复制数据 - DBMS 必须将数据写入表并维护索引。为了避免索引碎片化并提高整体吞吐量,它将一次添加大量记录并分块修改索引 - 这意味着它会在一段时间内对数据库文件进行大量写入,而对导入文件进行少量读取。随着索引变大,添加记录需要做更多工作。

关闭文件系统日志记录将有助于提高吞吐量。(可能从调整 DBMS 中获得更大的好处 - 但这需要更多的努力、反复试验 - 如果您的恢复不频繁,这将是不值得的)。

相关内容