我已经从Parse [1]读了一篇文章,可以运行compact
来保存MongoDB的索引大小。
我们的总索引大小是10GB,我们的内存总容量是12GB,因为你可能知道当索引大小接近内存大小的时候MongoDB性能很差,所以我们试图运行compact
,把大小减小到7GB。
但是,一周之后,这个规模已经增长到了10GB,所以我们现在有一个计划任务来执行compact
命令。
我在想,如果这真的有帮助,为什么指数增长如此之快,并达到10GB稳定?
[1] http://blog.parse.com/2013/03/26/always-be-compacting/
parsing有一个独特的问题 – 他们不知道人们如何使用他们提供的MongoDB。 大多数依靠Parse作为pipe理MongoDB用例的人大多会阅读Parse试图解决客户不良使用的问题。
这就是说,你不应该总是压缩。 事实上,如果你不得不经常压缩,这意味着你正在低效地使用MongoDB。 MongoDB可能被“碎片整理”的原因是:
如果您定期删除文件,那么您应该考虑使用TTL或加盖的collections。
如果您正在更新文档并使文档变大(即不断扩展数组),那么您应该考虑重新devise模式以限制文档的无限增长。 或者,您可以考虑添加填充作为将来更新的占位符。
无论哪种方式,如果你经常需要紧凑化,这是一个不正确使用MongoDB的症状,你应该考虑重新devise你的模式。 压缩是阻止命令,在数据量大于几个演出可能需要一段时间才能完成。