嘿弗拉德,你有幾個關於日誌的簡單策略。
首先要知道的是,Mongo通常可以處理大量的連續插入,而沒有大量的RAM。原因很簡單,你只能插入或更新最近的東西。所以索引大小會增長,但數據會不斷地被調出。換句話說,你可以將RAM的使用分成兩個主要部分:索引&數據。
如果您正在運行典型的日誌記錄,數據部分會不斷被刷新,所以只有索引真正停留在RAM中。
要知道的第二件事是,您可以通過將日誌放入較小的桶中來緩解索引問題。這樣想想吧。如果您將所有日誌收集到帶日期標記的集合中(稱爲logs20101206
),那麼您還可以控制RAM中索引的大小。
當你翻滾幾天時,舊的索引將從RAM中刷新,並且不會再次訪問,所以它會消失。
,但我使用的轉儲和刪除舊數據
這的天記錄的方法還有助於刪除舊數據cron腳本也在考慮。在三個月內,當您完成數據時,您只需執行db.logs20101206.drop()
,並且集合即刻消失。請注意,您不會回收磁盤空間(全部是預先分配的),但新數據將填補空白處。
我是否應該考慮使用更小的鍵,如其他論壇上的建議?
是的。
事實上,我已經將它嵌入到我的數據對象中。所以我使用logs.action
或logs->action
訪問數據,但在下面,數據實際上保存爲logs.a
。在「領域」而不是在「價值」上花費更多空間是非常容易的,因此值得縮小「領域」並試圖將其抽離其他地方。
謝謝您的詳細解答:) – 2010-12-07 10:46:34
但是,是不是有任何方法可以指定給操作系統,mongo的駐留內存不應該大於XXX MB? – 2010-12-07 10:47:42