mongod 工作集如何在数据库之间分区
How is mongod working set partitioned among databases
我想知道 mongo 如何在数据库之间分配可用内存。我在一个 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 工作set 正在超越内存,值是任意的)。
如果是这样,有没有办法确保各个数据库将 space 保留在内存中?
在 MongoDB <= 2.6 中,使用基于 mmap 的存储引擎,操作系统根据 MongoDB 在内存中的访问模式来选择哪些数据在内存中,哪些不在内存中-映射文件。 MongoDB 不控制内存中的内容或内存中的内容,除非通过它访问数据的方式(因此您也无法通过 MongoDB 控制它)。
要在内存有压力的系统中将内存专用于数据库,您需要继续访问数据库(您可能会说您需要保留数据库 "warmed up")。
我想知道 mongo 如何在数据库之间分配可用内存。我在一个 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 工作set 正在超越内存,值是任意的)。
如果是这样,有没有办法确保各个数据库将 space 保留在内存中?
在 MongoDB <= 2.6 中,使用基于 mmap 的存储引擎,操作系统根据 MongoDB 在内存中的访问模式来选择哪些数据在内存中,哪些不在内存中-映射文件。 MongoDB 不控制内存中的内容或内存中的内容,除非通过它访问数据的方式(因此您也无法通过 MongoDB 控制它)。
要在内存有压力的系统中将内存专用于数据库,您需要继续访问数据库(您可能会说您需要保留数据库 "warmed up")。