嘿弗拉德,你有几个关于日志的简单策略。
首先要知道的是,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