在最近尝试使用MongoDB之后,我尝试了一些将大量数据导入/插入集合的不同方法.到目前为止,我发现的最有效的方法是mongoimport.它工作得很好,但仍有开销.即使导入完成后,除非重新启动计算机,否则内存不可用.
例:
mongoimport -d flightdata -c trajectory_data --type csv --file trjdata.csv --headerline
我的标题和数据如下所示:
'FID','ACID','FLIGHT_INDEX','ORIG_INDEX','ORIG_TIME','CUR_LAT', ...
'20..','J5','79977,'79977','20110116:15:53:11','1967', ...
有了530万行乘20列,大约900MB,我最终是这样的:
从长远来看,这对我不起作用;我可能无法始终重启,或最终会耗尽内存.什么是更有效的导入MongoDB的方法?我已经读过有关定期RAM刷新的内容,我怎么能实现类似于上面的例子呢?
更新:
我不认为我的案例会因调整fsync,同步延迟或日记而受益匪浅.我只是想知道什么时候这是一个好主意和最佳实践,即使我在高RAM服务器上运行.
最佳答案 我猜moleodb本身正在使用内存,而不是mongoimport. Mongodb设计试图将所有数据保存到内存中,并依赖操作系统在没有足够空间时交换内存映射文件.所以我会给你两条建议:
>不要太担心你的操作系统告诉你什么内存是“免费的” – 一个现代运行良好的操作系统通常会使用可用于内存的每一点RAM.
>如果您不能遵守#1,请不要在笔记本电脑上运行mongodb.