mysqldump导出数据时,如何调整每一个insert语句的values值的数量?

当咱们对一个包含1千万行记录的表history执行导出时,假设只用的备份语句以下:mysql

  #mysqldump -uroot -p'123456'  --set-gtid-purged=OFF tdb history>history.sqlsql

当咱们执行表的恢复时,执行以下语句:测试

mysql> source history.sqlspa

。。。文档

Query OK, 0 rows affected (0.01 sec)class

Query OK, 27893 rows affected (1.78 sec)
Records: 27893 Duplicates: 0 Warnings: 0效率

Query OK, 27961 rows affected (0.46 sec)
Records: 27961 Duplicates: 0 Warnings: 0方法

。。数据

咱们发现,每次只能插入2.7万条左右的记录,经过修改MySQL variables参数,可能会更改插入效率。但每次insert的值没法改变。后来研究备份文件内容发现,margin

每一个insert语句后面的values值大约就在2.7万左右。不是一条insert语句把全部values都插入的。那若是我想更改mysqldump导出时每一个insert语句的values值的数量,该如何操做呢?

方法以下:

  # mysqldump -uroot -p'123456' --net-buffer-length=2046528 --set-gtid-purged=OFF tdb history>history.sql

经过修改--net-buffer-length的值来实现。默认值为1046528。而mysqld中该参数的默认值为16384。

修改后,我发现每一个insert语句的values值,能够高达5.4万左右。

问题:是否是这个值调的越高越好呢?

通过测试发现:

一、调高后,备份速度明显快不少。

二、但恢复数据时,因为须要对表进行加锁,因此加锁时间也会边长。

这个要权衡利弊进行设置。

参考文档:

一、极客时间《MySQL实战45讲》:41 如何快速复制一张表?

相关文章
相关标签/搜索