我想知道mongo如何分割数据库中的可用内存。我有多个数据库在一个可变大小的mongod中运行,我想知道我的工作集是如何分配的。
让我们假设我每天都会收集那些将要访问的数据(所以我的用户每天只查询最后一天并且过去没有回头看)。我的问题是我是非常可变大小和可变工作集的数据集。这是通过以下设置:
现在我想知道单个数据库工作集将如何在内存中的内存大小中进行分区? 45/45/5/5?
所以在我的情况下,我的db1昨天晚上一下子加载了,感觉分区不再是45/45/5/5而是88/10/1/1(意味着db1工作集是超越记忆,价值是任意的)。
如果是这种情况,有没有办法确保单个dbs在内存中保留空间?
答案 0 :(得分:1)
在具有基于mmap的存储引擎的MongoDB< = 2.6中,操作系统根据内存映射文件中MongoDB的访问模式选择内存中和不在内存中的数据。除了通过如何访问数据之外,MongoDB不会控制内存或内存不足(因此也无法通过MongoDB控制它)。
为了在内存有压力的系统中保留专用于数据库的内存,你需要继续访问数据库(你可能会说你需要保持数据库“热身”)。