5

我目前正在使用 MongoDB 来存储单个数据集合。该数据大小为 50 GB,索引大约为 95 GB。我正在运行一台具有 256 GB RAM 的机器。我基本上希望在 RAM 中拥有所有索引和工作集,因为机器专门分配给 mongo。

目前我看到,虽然 mongo 运行的集合大小为 50 GB + 索引大小为 95 GB,但机器中使用的总 RAM 小于 20 GB。

有没有办法强制 mongo 利用可用的 RAM,以便它可以将所有索引和工作集存储在内存中?

4

1 回答 1

5

当您的 mongod 进程启动时,它在常驻内存中没有您的数据。然后在访问数据时对其进行分页。鉴于您的收藏适合内存(这里就是这种情况),您可以在其上运行touch 命令。在 Linux 上,这将调用 readahead 系统调用将数据和索引拉入文件系统缓存,使它们在内存中可供 mongod 使用。在 Windows 上,mongod 将读取每个页面的第一个字节,并将其拉入内存。

如果您的集合+索引不适合内存,则只有在触摸期间访问的数据的尾部可用。

于 2013-05-03T19:17:43.393 回答