2012-03-26 49 views
3

我正在測試Mongo DB用於數據庫中一個巨大的表約300億記錄約200字節每個。我知道Sharding是這種音量所需要的,所以我試圖在一臺機器上獲得1到20億條記錄。我已經在具有2個CPU/6個內核和64 GB RAM的計算機上達到了10億條記錄。我輸入了沒有索引的文件,並且速度還可以(平均14k條記錄/秒)。我添加了索引,這需要很長時間,但這是可以的,因爲它是一次性的。現在將新記錄插入數據庫需要很長時間。據我所知,插入記錄(CPU,RAM和I/O狀態良好)時機器未加載。如何加速插入新記錄?MongoDB插入性能 - 巨大的表與幾個索引

+0

你能告訴我們的插入速度是什麼呢?也許平均每個插入毫秒。 – 2012-03-27 17:15:44

+0

現在的插入速度,在表中有10億條記錄,並且定義了2個索引,每秒大約有200條記錄。 – 2012-04-01 10:28:08

+0

2指數是什麼樣的指數? _id或稀疏或獨特或正常? – jianpx 2013-01-26 03:46:45

回答

4

我建議將此主機添加到MMS(http://mms.10gen.com/help/overview.html#installation) - 確保您安裝了munin-node支持,這將爲您提供最多的信息。這可以讓你跟蹤什麼可能會減慢你的速度。對不起,我不能在答案中更具體,但這裏有很多很多可能的解釋。一些一般性的要點:

  • 添加索引意味着,索引以及你的工作數據集將在RAM現在,這可能褪去,你的資源(查找頁面錯誤)
  • 現在,你有指標,它們必須在插入時更新 - 如果所有內容都適合RAM,則應該是正常的,請參閱第一點
  • 您還應該檢查磁盤IO,看看它是如何執行的 - 背景平均值如何顯示?
  • 您是否正在運行正確的文件系統(XFS,ext4)和2.6.25以後的內核版本? (早期版本有fallocate問題())

跟進一些不錯的一般信息可以在這裏找到:

http://www.mongodb.org/display/DOCS/Production+Notes