mysqldump和navicat导出sql文件的区别

最近开发一个功能需要用到mysql命令导入sql文件。用较小的sql文件(200M以内)测试的时候发现虽然比较慢,但也还是能接受,大都能在20分钟内导入完毕。直到后边使用比较大的sql文件(3G左右)测试时出现了问题,硬生生导入了23个小时才导入完毕,这个时间肯定不能接受的。于是去查解决方式,什么增加“max-allowed-packet”参数值,修改“wait_timeout”值,修改“net_buffer_length”值等都没法解决这个问题。

后来仔细一想使用的sql文件都是navicat导出的,会不会是navicat的原因。

于是测试了使用mysqldump导出的sql文件。同样的一个数据库,navicat导出的sql文件大小为:2.8G;而mysqldump导出的sql文件却只有:1.92G。

然后使用mysqldump导出的sql文件进行导入,果然,这次只需要不到5分钟就导入完毕。

确定了原因,接下来就分析是什么导致的。

分别查看mysqldump导出的sql文件和navicat导出的sql文件之后得到了原因:mysqldump导出的sql文件中会把尽可能多的数据放到一条“insert”语句中,而navicat导出的sql文件每条“insert”语句只对应一条数据。

也就是说,如果表里有5万条数据,navicat导出的sql文件中就会有5万条“insert”语句,而mysqldump导出的sql文件中可能就只有100条“insert”语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值