2013-04-06 21 views
4

在最近嘗試了MongoDB之後,我嘗試了一些將大量數據導入/插入集合的不同方法。到目前爲止,我發現的最有效的方法是mongoimport。它完美的工作,但仍有開銷。即使導入完成後,除非我重新啓動機器,否則內存不可用。內存高效的方式來導入大文件和數據到MongoDB?

例子:

mongoimport -d flightdata -c trajectory_data --type csv --file trjdata.csv --headerline 

在我的headerline和數據是這樣的:

'FID','ACID','FLIGHT_INDEX','ORIG_INDEX','ORIG_TIME','CUR_LAT', ... 
'20..','J5','79977,'79977','20110116:15:53:11','1967', ... 

530萬行20列,約900MB,我最終是這樣的:

Overhead

從長遠來看,這對我無效;我可能不會總是能夠重新啓動,或最終會耗盡內存。什麼是更有效的導入到MongoDB的方式?我已經讀過關於週期性RAM沖洗的問題,我如何實現類似上面的例子?

更新: 我不認爲我的情況會從調整fsync,syncdelay或日記中獲益很多。我只是好奇這是否是一個好主意和最佳實踐,即使我在高RAM服務器上運行。

回答

2

我猜測內存被mongodb本身使用,而不是mongoimport。按設計Mongodb試圖將其所有數據保存到內存中,並在沒有足夠空間時依靠操作系統交換內存映射文件。所以,我願意給你兩點建議:

  1. 不要太擔心你的操作系統是告訴你多少內存是「免費」 - 一個現代化的良好運行的操作系統通常會使用每一點RAM都可用於某些事情。

  2. 如果您無法遵守#1,請不要在筆記本電腦上運行mongodb。

+0

我想我的情況不會受益於調整fsync,syncdelay或日記。我只是好奇這是否是一個好主意和最佳實踐,即使我在高RAM服務器上運行。 – 2013-04-06 14:41:43

相關問題