mysql大数据量导入和导出

公司遇到一个奖金2个G的数据导出导入,用最原始的导出和source 或者mysql <导入,执行时间很长,跑十几个小时,也只有不到一个G的数据,然后根据以下方式调整,300W条记录,800多M的单表进库,只用了2分钟,下面简单分析一波。

大致思路

  1. 筛选数据库中数据量大的表
  2. 检查是否又索引,索引在插入数据时,会越来越耗性能
  3. 设置数据库max_allowed_packet值
  4. 导出数据时,不要使用单条数据

具体实时

1、筛选数据库中大表
这个就不详细说了,我是筛选出来大表后,其余小表导出sql进行单独导入,大表单独导入
2、索引问题
大表为了检索一般都会创建索引,所以在数据导出时,或者再插入数据时,一定要先删除索引,因为本文是新导入库,因此是在导出或者建表语句中将索引删除了

3、设置数据库max_allowed_packet值

编辑/etc/my.cnf  在[mysqld]下面加上此设置,然后重启mysql服务,全部完成后,建议去掉此设置,并重启mysql服务

我这里设置了50M

4、具体导出
   我用的navicate,所以按照上面截图了,选择工具=>数据传输=>弹出下图
   点击常规边上选项,去选择导出是否使用事务,以及是否扩展插入,扩展插入会一此insert多条语句

选择工具=>数据传输=>弹出此图,版本区别,自己百度

点击常规边上选项,进行高级配置

5、导入
建议将sql文件上传,然后用source导入
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值