mongoDB如何处理内存管理?

mongoDB如何处理内存管理?,mongodb,memory-management,Mongodb,Memory Management,引自 内存管理不佳-MongoDB通过内存映射管理内存 整个数据集,页面缓存管理和故障处理由 内核一个更智能的方案将能够做如下事情 使用前在索引中出错,以及在 冷/热数据更有效。结果是内存使用率无法满足要求 有效地进行推理,并且性能不是最优的 我不明白他的意思。有人能详细说明一下吗 正如@cHao所说,这有点夸张,作者并不真正理解操作系统本身的内存管理程序有多么复杂 这就是为什么MongoDB没有自己的内存管理,因为这样做可能会导致头痛的问题和其他废话。最终,操作系统有一个非常好的内存管理过程(

引自

内存管理不佳-MongoDB通过内存映射管理内存 整个数据集,页面缓存管理和故障处理由 内核一个更智能的方案将能够做如下事情 使用前在索引中出错,以及在 冷/热数据更有效。结果是内存使用率无法满足要求 有效地进行推理,并且性能不是最优的


我不明白他的意思。有人能详细说明一下吗

正如@cHao所说,这有点夸张,作者并不真正理解操作系统本身的内存管理程序有多么复杂

这就是为什么MongoDB没有自己的内存管理,因为这样做可能会导致头痛的问题和其他废话。最终,操作系统有一个非常好的内存管理过程(即使Windows也有),那么为什么不使用这个过程,而不是创建一个需要几年甚至几十年才能达到相同水平的过程呢

一个更智能的方案将能够在使用之前在索引中执行类似错误的操作

不确定MongoDB是否能读懂你的心思

我的意思是,如果你已经正确地设计了你的系统,并且不需要同时在RAM中使用所有的索引(甚至是你全部使用的索引),那该怎么办

在大量数据中执行这种先发制人的分页(而不是出错)听起来与良好的设置背道而驰

如果您需要在特定时间将数据存储在RAM中,您可以使用
touch()
,也可以在RAM中运行所需的常见查询的scirpt

结果是无法有效地推断内存使用情况,并且性能不是最优的

嗯,那个人显然从来没有真正费心在测试中使用操作系统自己的内置工具来测量
mongod
进程的页面错误和内存访问


也就是说,在后一版本的MongoDB中实际上有一个工具可以帮助计算内存使用量:

它基本上是一个咆哮。一个至少据称受过教育的咆哮,但仍然是一个咆哮。如果其他数据库有自己的内存管理方案,而mongoDB让操作系统来处理,那么肯定会有很大的不同。这可能是一种咆哮,但其中没有真实性?公平地说,关于“分页”与“错误”,后者实际上是一个相当准确(且更明确)的词来描述正在发生的事情。通常,通过尝试读取磁盘上的页面(即:故意造成页面错误,只要操作系统知道如何使这些页面可用,这就不是一个错误)来交换磁盘上的页面。@cHao你不能对索引进行错误判断,尽管你只能在索引中分页,这通常是因为索引不是一个页面