4

一个多月以来是我与 mongoDB 的战争。直到我输了=] ...

战斗 1。 战斗 2。 现在是一个新问题。再次,内存不足。

最初,这是通过以 VPS 的速率简单地增加内存来解决的。然后日记=假。但是现在我已经达到了你的计划并继续增加内存是不可能的。

我的基地缺少 4 GB 的内存。项目应该怎么选数据库,mongoDB内存这么多,居然没写。mongoDB 中大约有 1000 万条记录缺少 4 GB 内存,而我的 1000 万条 MySQL 数据库可以轻松应对 1.4 GB 内存。

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

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

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

或者如果有替代方案,你能说什么吗?

4

1 回答 1

2

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

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

顺便说一下,在 Internet 和 mongodb.org 上有很多关于此的参考。说在任何地方都没有提到它是不正确的。

于 2012-08-20T11:55:47.370 回答