我有大约20000个带有JSON数组的文件。我想将所有这些文件转储到本地托管的MongoDB中。我使用mongoimport是为了这个目的。
有什么办法可以加快这个过程吗?
这20000个文件包含大约1200万条记录。
我的Mongo版本是2.6.12,位于32核的linux服务器中。我已经将1.34亿条记录导入MongoDB。输入文件的数量约为1700个,格式为JSON数组。我的测试结果如下:
- mongoimport:100K记录一次。在4分钟50秒内导入10万条记录。(在Mongo 3.0.0版本之前,没有"--numInsertionWorkers"参数,所以我进行单线程导入。如果有新版本,可以尝试使用该参数。)
- mongoimport:50K记录一次。在2分钟20秒内导入10万条记录
- PyMongo(单线程):a记录一个时间,使用insert方法。在30秒内导入10万条记录
- PyMongo(多线程,线程号为8):记录一次。在1小时32分钟内导入1.34亿条记录。这几乎是线性加速
原因可能在于:一个有100K记录的文件是一个很大的块,这对于"mongoimport"来说很耗时。我还不明白为什么PyMongo比mongoimport更快。JSON文件的处理速度是否更快?因此,您可能可以尝试以多线程的方式使用PyMongo。