我想知道mongo是如何拆分数据库之间的可用内存的。我有多个数据库在一个可变大小的mongod中运行,我想知道我的工作集将如何分配。我们假设我每天都会收集数据,这些数据将在一天之后访问(所以我的用户每天只查询最后一天,而不回头查看)。我的问题是我是非常可变大小的数据集和如此多变的工作集。这是具有以下设置:mongod工作集是如何在数据库之间分区的
- DB1 - 尺寸100(45%)
- DB2 - 尺寸100(45%)
- DB3 - 尺寸10(5%)
- DB4 - 大小10(5%)
现在我想知道单个数据库工作集将如何在内存中分区为内存大小? 45/45/5/5?
所以在我的情况下,我有db1昨天晚上一起加载,感觉像分区不再是45/45/5/5但88/10/1/1(意思是db1工作集正在超越内存,值是任意的)。
如果是这样的话,有没有一种方法可以确保个人数据库会保持内存空间?
这是否意味着在版本3.0和更高版本中,我不会必须“让我的数据库变暖”? – mcorbe 2015-02-10 17:00:30
3.0将mmap作为默认存储引擎(从2.6改进,但我的答案仍然适用)。可选的WiredTiger存储引擎处理内存的方式非常不同 - 它拥有自己的缓存 - 但我不太了解它如何管理缓存以说明它在这种情况下的行为。 – wdberkeley 2015-02-10 17:04:02
任何可能成为mmap中的一个功能的可能性? – mcorbe 2015-02-11 09:30:51