mysqldump -extended-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`;】

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`--extended-insert` 是 `mysqldump` 命令行工具的一个参数,用于生成多行的 `INSERT` 语句,以减少备份文件的大小和提高导入数据的效率。默认情况下,`mysqldump` 会为每一行数据生成一个 `INSERT` 语句,这样会导致备份文件非常大,而且在导入数据时也会变得非常慢。使用 `--extended-insert` 参数可以将多行数据合并成一个 `INSERT` 语句,从而减小备份文件的大小,提高导入数据的效率。 举个例子,假设有一个名为 `test` 的表,其中有 10 条数据,如果不使用 `--extended-insert` 参数,则备份文件中会有 10 条 `INSERT` 语句,如下所示: ``` INSERT INTO test VALUES (1, 'aaa'); INSERT INTO test VALUES (2, 'bbb'); INSERT INTO test VALUES (3, 'ccc'); INSERT INTO test VALUES (4, 'ddd'); INSERT INTO test VALUES (5, 'eee'); INSERT INTO test VALUES (6, 'fff'); INSERT INTO test VALUES (7, 'ggg'); INSERT INTO test VALUES (8, 'hhh'); INSERT INTO test VALUES (9, 'iii'); INSERT INTO test VALUES (10, 'jjj'); ``` 而使用 `--extended-insert` 参数,则备份文件中只有一条 `INSERT` 语句,如下所示: ``` INSERT INTO test VALUES (1, 'aaa'), (2, 'bbb'), (3, 'ccc'), (4, 'ddd'), (5, 'eee'), (6, 'fff'), (7, 'ggg'), (8, 'hhh'), (9, 'iii'), (10, 'jjj'); ``` 可以看到,使用 `--extended-insert` 参数可以将多行数据合并成一个 `INSERT` 语句,从而减小备份文件的大小,提高导入数据的效率。不过,需要注意的是,如果备份的数据量非常大,那么生成的单个 `INSERT` 语句的长度可能会超过 MySQL 服务器的限制,这时需要使用 `--max-allowed-packet` 参数来增加 MySQL 服务器的限制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值