引自http://blog.engineering.kiip.me/post/20988881092/a-year-with-mongodb
糟糕的内存管理 - MongoDB通过内存映射来管理内存 整个数据集,留下页面缓存管理和故障 核心。更智能的方案就能做到这样的事情 在使用之前索引中的错误以及处理错误 冷/热数据更有效。结果是内存使用不能 有效推理,表现不佳。
我不明白他的观点。有人可以详细说明吗?
答案 0 :(得分:1)
正如@cHao所说,这是一个有点咆哮,作者并不真正理解操作系统自身内存管理程序的复杂性和复杂性。
这就是为什么MongoDB没有自己的内存管理,因为这样做可能会导致头疼的问题和其他废话。在一天结束时,操作系统有一个非常好的内存管理过程(甚至是Windows),那么为什么不使用它而不是创建一个需要几年甚至几十年才能达到同一水平的操作系统?
更智能的方案可以在使用之前执行索引中的错误
不确定MongoDB是否能读懂你的想法......
我的意思是,如果你实际设计的系统是正确的,并且不需要同时在RAM中的所有(甚至完整的那些)你的索引?
对数据进行这种先发制人的分页(而不是故障)听起来与一个好的设置相反。
如果您需要在某些时间将数据放在RAM中,您可以使用touch()
http://docs.mongodb.org/manual/reference/command/touch/,或者您可以在RAM中运行所需的常见查询。
嗯,那个人显然从来没有真正打扰过使用操作系统自带的内置工具来测量结果是内存使用无法有效推理,性能不佳。
mongod
进程测试中的页面错误和内存加入。
话虽如此,后一版本的MongoDB实际上有一个工具可以帮助记录内存使用情况:http://docs.mongodb.org/manual/reference/command/serverStatus/#server-status-workingset