MongoDB 消耗大量内存

标签 mongodb debian database

一个多月是我和mongoDB的 war 。直到我输了 =] ...

Battle 1. Battle 2. 现在有一个新问题。同样,内存不足。

最初,这是通过简单地以 VPS 速率增加内存来解决的。然后 journal = false。但是现在我到了你的计划的顶端,继续增加内存是不可能的。

我的基地缺少 4 GB 内存。 项目应该怎么选数据库,哪里写到mongoDB内存那么多。 mongoDB 中约有 1000 万条记录缺少 4 GB 内存,而我的 MySQL 数据库有 1000 万条记录,仅需 1.4 GB 内存即可。

问题按我的理解,索引字段很多。但是由于我不能分别登录到数据库,所以不能删除它们。他们在早期发展阶段需要我,现在他们对我不重要了。

请告诉我,我能以某种方式删除它们吗? 有一个数据库的转储完全是整个文件夹 database/data/db 在我的 4 GB 内存的 PC 上,数据库无法在 4 GB 的 VPS 上启动。 作为替代方案,我想在某些 VPS/VDS 上进行测试以运行 mongo 和删除 key 。

您知道有测试期和 6 GB 内存的虚拟主机吗?

或者如果有其他选择,您能说说吗?

最佳答案

这些问题与数据集的大小关系不大。 MongoDB 使用内存映射文件作为其存储引擎。因此,它会在可能的时候开始将热数据页面交换到内存中,而且它会相当积极地这样做(或者更准确地说,操作系统内存管理会这样做)。

基本上它会使用尽可能多的可用内存,您几乎无能为力。如果有可用空间,在操作期间访问的所有数据页(无论是实际数据还是索引)都将交换到内存中。

顺便说一下,在 Internet 和 mongodb.org 上有很多关于此的引用资料。说它在任何地方都没有被提及是不正确的。

关于MongoDB 消耗大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12036941/

相关文章:

javascript - MongoDB,如果新值不为空,则更新集合字段

java - tomcat8 和 eclipse 火星噩梦

php - 如何从 CodeIgniter 中失败的数据库查询中恢复?

MYSQL 解释给出 "Impossible WHERE"和 SELECT Count(x) 查询

node.js - npm 模块安装不断中止

java - 如何最好地将长字符串保存到数据库?

jquery - 如何有条件地为 Jade 中的文本分配颜色

node.js - 在 express.js 中连接到 Mongodb-Native-Driver

mongodb - 使用文档中存储的值查询 $near

php - 哪个操作系统更适合网络服务器,ubuntu 或 debian 或其他?