2015-07-21 44 views
0

使用python 2.7和mongodb作爲我的數據庫。 (實際上它不關係我使用哪個數據庫)決定從數據庫中提取多少個文件以便利用內存

在我的數據庫中,我有數百萬的文檔,有時我需要遍歷所有這些文檔。

拉一個查詢中的所有文檔是不現實的,因爲這會殺死內存,而是我拉每次迭代1000個文檔並迭代它們,當我完成時,我拉另一個1000,等等。

我想知道是否有任何公式來計算從數據庫中拉出每個迭代的最佳數量。

我無法通過互聯網找到答案我的問題的東西。

基本上我的問題是在每次迭代中從數據庫中找到最佳數字的最佳方法是什麼。

+1

找出您可以分配給記錄的文檔大小和內存大小(或者您可以分配)。然後(可以分配的內存量/一個文檔的內存量)是可以在一次迭代中迭代的文檔數量。這應該是你最好的記錄數量。嘗試多種組合並檢查性能。編號提供最佳的系統/操作性能,並採取允許的內存是最適合你的。 –

+0

我認爲它不是一個真正的好主意,達到接近內存的限制。您正在讀取一條查詢中的1000條記錄,因爲這將需要更少的內存和網絡傳輸時間,因此效率更高。 –

回答

0

你唯一的機會就是拿一些樣本文件來計算它們的平均大小。更難的部分是要知道可用內存是多少,請記住還有其他進程並行使用ram!

所以即使你走這條路,你也需要保留一定數量的免費公羊。我懷疑這項工作是否值得。

相關問題