LOAD INFILE的2亿多记录速度

时间:2015-03-31 19:29:52

标签: mysql database myisam

如果这个问题是重复的,我很抱歉,但我发现的大部分内容都与InnoDB有关,我正在使用MyISAM。

我正在尝试创建一个可以将200到3亿条记录加载到表中的进程。我正在使用LOAD DATA INFILE,对于一个拥有1.78亿条记录的文件,加载数据大约需要30分钟。任何人都可以建议任何加快这一点的方法吗?或者这是相当期待的表现?我已经尝试在加载之前禁用密钥,但这似乎并没有真正创造任何明显的速度提升。我可以尝试其他什么设置?

我在Linux服务器上有24个相当现代的核心。有什么方法可以利用这个事实吗?

我将补充一点,我试图加载3000万条记录,花了5分钟,这似乎与1.78亿条记录大致相同。但是,如果我尝试将3000万条记录加载到已有3000万条记录的表中,则时间需要8分钟。我可以做的任何事情,因为我相信这种情况也会发生很多次。

感谢任何帮助,但请知道我对数据库无知,所以链接到示例或文档会非常有帮助。

1 个答案:

答案 0 :(得分:1)

在某种程度上,这取决于给定记录的宽度,但听起来在30分钟内的1.78亿条记录对我来说已经是一个相当好的速度。我在25分钟内完成了4600万条记录,并且非常高兴,但在我的案例中,每条记录都有一些处理过程。

几乎总有一些方法可以提高性能,但成本效益有时会让人望而却步。如果您要比每30分钟更频繁地加载文件,那么显然可能需要其他东西。但在这种情况下,我相信重新思考更大的系统,你存储的内容/存储它的原因也许是有道理的。

至于将3000万条记录加载到空表与非空表之间的区别,这对于索引表来说并不意外。