mysqldump -extended-insert参数的使用

本文深入探讨了mysqldump工具的--extended-insert参数,解释了其如何通过批量INSERT提高导入效率,对比了开启与关闭该参数在导出及导入过程中的性能差异,以及在主键冲突情况下的表现。

mysqldump 的 --extended-insert 表示长INSERT,多row在一起批量INSERT,提高导入效率,和没有开启 -e 的备份导入耗时至少相差3、4倍,默认开启;用--extended-insert=false关闭。强烈建议开启,

 

使用--extended-insert=false导出的表如下图这种,每行一个insert语句。

wKioL1d7ZkrQSREYAABEgooZSs4357.png

使用--extended-insert=true导出的表如下图这种,一个很长的insert语句。

wKioL1d7Zo-T52crAAAyVmvjsmM570.png

 

下图是两种方式的导出数据库,可以看出--extended-insert=true的时候,耗时较少。因为我的这个库很小,所以两种方式对比起来不明显。

对于大型数据库,这2种方式的差距还是很大的。好在默认mysqldump就是启用--extended-insert=true参数的。

除了导出数据库时候这个参数会产生影响,导入的时候也是有影响的。直接看下图:

wKiom1d7arDzh07OAAAqCQlDncw770.png

 

那么使用--extended-insert=false导出表是不是一无是处呢?

并非如此。比如数据库中表中已经存在大量数据,那么再往表中导入数据时,如果出现主键数据冲突Duplicate key error,将会导致导入操作失败,但此时如果是使用--extended-insert=false导出表,导入时主键冲突的会报错Duplicate key error,但不冲突的数据仍然能正常导入。【个人感觉这个不常出现,因为我们每次导出都是加-B参数的,导出sql语句里面有DROP TABLE IF EXISTS `TABLE1`;】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值