4

正如这里提到的,mongodb 在具有单个 mongod 实例的 32 位机器中将数据大小限制为 2GB。但是我想知道 32 位机器理论上有 4GB 的可寻址空间,mongod 可以使用这 4GB 而不是 2GB 来使用虚拟内存。那么为什么答案是 2GB,而不是 4GB?

4

2 回答 2

8

4Gb 的可寻址空间与用户应用程序打开的内存映射文件可用的内存空间不同。一些可寻址空间是为操作系统内核和内存映射设备(如显卡)保留的。

例如,32 位 Windows 将用户模式(以及内存映射文件)限制为 ~2Gb RAM,将总系统 RAM 限制为 ~3.5Gb。

如需更多阅读,请参阅:

大多数现代桌面和服务器环境在大约十年前开始转向 64 位(请参阅Wikipedia 上的 64 位操作系统时间线),因此这不是实际上影响部署的限制。

您只想在数据有限的开发环境中使用 32 位 MongoDB。

于 2013-02-25T04:28:36.900 回答
2

32 位 MongoDB 进程限制为大约 2 GB 的数据。这让许多习惯于不必担心这一点的人感到惊讶。原因是 MongoDB 存储引擎使用内存映射文件来提高性能。

通过在 32 位上不支持超过 2gb,我们能够使我们的代码更加简单和整洁。这大大减少了错误的数量,并减少了我们发布 1.0 产品所需的时间。

http://blog.mongodb.org/post/137788967/32-bit-limitations

于 2013-02-25T03:43:53.367 回答