2

我有一个大约 5 GB 的静态数据库(甚至永远不会收到写入),而我的服务器 RAM 是 30 GB。我专注于尽快将复杂的聚合返回给用户所以我看不出为什么我不应该将(a)索引和(b)整个数据集完全存储在 RAM 中,以及(c ) 在 Mongo 服务器启动时自动存储在那里。目前我的主要瓶颈是运行组命令以从数百万行中查找唯一元素。

我的问题是,在新的 Mongo/WiredTiger 上运行时,我该如何做 (a)、(b) 或 (c)?我知道“touch”命令不适用于 WiredTiger,因此 Internet 上的大多数信息似乎都已过时。(a)、(b) 或 (c) 是否已经自动完成?我不应该对这个用例执行这些步骤吗?

4

1 回答 1

0

Normaly 你不应该做任何事情。磁盘页面根据请求加载到 RAM 中并留在那里。如果没有更多可用内存,则旧的(未使用的)页面将被卸载以供其他需要它们的程序使用。

如果您必须将整个数据库放在 ram 中,您可以使用 ramdisk 并告诉 mongo 将其用作存储设备。

我建议您修改索引和/或数据结构。拥有正确的可以在性能上产生巨大的差异。我们谈论的是秒与小时。

于 2015-07-22T21:00:33.160 回答