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

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

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

当我们执行表的恢复时,执行如下语句:

mysql> source history.sql

。。。

Query OK, 0 rows affected (0.01 sec)

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的值无法改变。后来研究备份文件内容发现,

每个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万左右。

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

经过测试发现:

1、调高后,备份速度明显快很多。

2、但恢复数据时,由于需要对表进行加锁,所以加锁时间也会边长。

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

参考文档:

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

 

转载于:https://www.cnblogs.com/myluguo/p/10622642.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值