MySQL 导入慢的解决方法

红薯 发布于 2010/03/02 21:23
阅读 6K+
收藏 16

MySQL导出的SQL语句在导入时有可能会非常非常慢,经历过导入仅45万条记录,竟用了近3个小时。在导出时合理使用几个参数,可以大大加快导 入的速度。

-e 使用包括几个VALUES列表的多行INSERT语法;
--max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;
--net_buffer_length=XXX  TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行。

注意:max_allowed_packet和net_buffer_length不能比目标数据库的设定数值 大,否则可能出错。

首先确定目标库的参数值

mysql>show variables like 'max_allowed_packet';
mysql>show variables like 'net_buffer_length';

根据参数值书写mysqldump命令,如:
E:\eis>mysqldump -uroot -p eis_db goodclassification -e --max_allowed_packet=1048576 --net_buffer_length=16384 >good3.sql

之前2小时才能导入的sql现在几十秒就可以完成了。

加载中
0
红薯
红薯

试验了一下,速度的确天翻地覆的快

0
JavaGG
JavaGG

不得不顶!!!!!!!!!

0
小编辑
小编辑

!!!!严重!!!!

经过测试发现,采用此方法导入会产生这么一个问题:

如果表中存在自动增长的字段,那么导入后的表中这个字段就没有自动增长了。

0
小编辑
小编辑

引用来自“招财猫”的帖子

!!!!严重!!!!

经过测试发现,采用此方法导入会产生这么一个问题:

如果表中存在自动增长的字段,那么导入后的表中这个字段就没有自动增长了。

经过检查,发现是我增加了 --skip-opt 参数的问题,干掉就可以了,哈哈

0
ghostbb
ghostbb

我本地导了一个2.6G的文件,机器是2G内存,跑的Debian 5,貌似物理内存吃满之前速度还不错,当物理内存使用率达到98%的时候就是无尽的等待了。我总共导入用了50多个小时。不知道红薯老大用了多大的数据测试的?

0
红薯
红薯

你试试我说的方法,原来50个小时,现在肯定半个小时以内。

0
ghostbb
ghostbb

红薯老大,我加了参数后,导入2小时还没结束!症状和之前一样,98%左右内存时候就及其缓慢了。我这里2000多个数据库。我还尝试了增加参数导出。。。,结果一个半小时还没导出完,放弃了。

0
范堡
范堡

引用来自“ghostbb”的帖子

 

红薯老大,我加了参数后,导入2小时还没结束!症状和之前一样,98%左右内存时候就及其缓慢了。我这里2000多个数据库。我还尝试了增加参数导出。。。,结果一个半小时还没导出完,放弃了。

 哟!这真是怪事,上星期我对一台 Sun V440 的机器导压缩后1.2G 的数据,20分钟左右就ok了。

原来几乎花了一天。

0
ghostbb
ghostbb

你机器的配置方便介绍下否?

0
红薯
红薯

我觉得跟机器配置无关的,再差的机器性能提升都是上百倍的,如果你的不行,那是否应该检查一下有没有做对啊,或者漏掉什么。

另外你说有2000个数据库是什么意思啊?

返回顶部
顶部